The problem is not that you do explicitly check something for null.
The problem you have is:
The NullCheck method is generic and will check if the object equals null. If it does, a NullReferenceException is thrown with a generic message.
IFF you explicitly check, throw ArgumentNullException for the parameter with the name of the method and the parameter.
In the case of the second NullCheck, since you wrote
To clarify: Yes, null will be returned from userDb.Get if there is no matching entry in the database.
throwing a NullRefExc here is really horrible - at the very least throw an InvalidOperationException indicating which IDwhich ID hasn't been found in the the DB and that passing invalid IDs is an error for this specific method.