If you try my examples, and change this line, you see, when you use
properties = TypeDescriptor.GetProperties(instance);
there are much more properties shown as when you use the other way.
I think (but i'm not sure that i'm right), that if i do it the first way, only the propetries wich are for that type directly, and not all others (like attached ones) are shown (but i'm not sure this is correct).
Maybe I change it back to your used syntax, but i will first do a few tests...