XMPP's XML overhead isn't as large as you might think; it compresses well, and streaming XML parsers can be pretty fast.
XML's extensibility is one of the reasons that XMPP has so many XEPs. A JSON-based protocol would need a central registry or some kind of namespaces to achieve the same thing.
Using XML these days seems too heavy weight.