FPropertyEditorInlineClassFilter IsUnloadedClassAllowed and IsClassAllowed use the confusing IsA semantics. In the IsUnloadedClassAllowed, the usage seems wrong completely.
It seems like the real intention is to verify that the passed in class is derived from the appropriate type AND the chain of owning objects must satisfy an IsA relationship with the "ClassWithin" member of the passed in class (i.e. the class is correct, and can be contained within the given classes).
This doesn't work at all for the UnloadedCase, as the check used (FClassViewerFilterFuncs::IfMatchesAll_ObjectsSetIsAClass) only checks against UBlueprintGeneratedClass (which means any native class will fail).
Expected: Both times TIObject is expanded, TestInstancedObjectBP should be in the class list.
Actual: TestInstancedObjectBP is not in the class list until the associated blueprint has been loaded.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-43098 in the post.