Indeed, you can't.
Instances are objects that's share the same object data. In other words, you can't make different instances, because they just the same. Take a look at Alt + D copies. They are linked, they are instances of the same data, and if you change one of them - the second will be changed also.
Instead of making the building and when distribute it on the surface, do the opposite thing: distribute the root thing on the surface and then add walls and windows on every root thing at the same time.
There is another way: make several buildings models, put them into one collection and instance them using this collection