VBA determines that IsEmpty(Range("A1")) implicitly uses the default property, so the expression is the same as IsEmpty(Range("A1").[_Default]).
On the other hand, VBA determines that TypeName(Range("A1")) does not use the default property, so the expression is different from TypeName(Range("A1").[_Default]).
Question
How does VBA determine whether the default property is implicitly used or not?