It's a bit tricky. Because the entity is actually 'out of sync' it's not really possible to say if the routine should return true or false: only after the entity has been refetched.
It checks if the entity is new or not. As the entity has been saved, it isn't new. So it checks whether the field has been changed. It's not marked as changed after a save, so it checks if the IsNull flag is true. But as the entity has never been loaded, that flag is false, so it reports false.
To get rid if this, the selfservicing entity first should check for refetch, and if so, refetch the entity. That will get rid of the error, but in the context of the call, the answer returned, is that the answer you're looking for? -> the answer returned after a refetch is the fact if the field in the DB is null or not (as it refetches the entity), not what it had at the moment you called the routine.
So adding the check for refetch... is that really helping? It might sound silly, but take into account an entity where you set a field to null, and it has a default constraint for that field. You save the entity. In the database, the field gets a default value, not null. When you call the method to test the current value for null, you'll get false, while the value in memory at that moment is null! (so you expected true).