Xcode... Well, Interface Builder more precisely, because Xcode doesn't create any interface, Interface Builder only supports Cocoa and Carbon applications and that's for a good reason...
It's simply because the way of managing interfaces in Mac OS X is way different than in Windows or Linux.
Visual C++ writes code when you build an interface and you simply use that code in your application. Interface Builder actually creates files containing an archive of the interface element, each element is encoded i that archive with their links, when you open your application, the code will load a the NIB file it needs and link every tools in it with the proper elements.
So, you can build interfaces other than Carbon and Cocoa, simply because they are the only API that use NIB file.