I’m not disputing that XMPP can be used to build a modern chat environment with history and group chat. The question there is one over the primitives that the protocol provides. As you say, these features (and decentralisation, via FMUC) are provided as optional extensions in XMPP. In Matrix, they are the core primitives of the protocol. To put it more concretely: Matrix works by replicating chunks of conversation history between servers -
not by forwarding stanzas. And there is simply no concept of a 1:1-only coversation; all conversations happen in rooms which may have an arbitrary number of users.
On the federation/decentralisation question: yes, matrix servers federate with one another networkwise. But the data they exchange is decentralised: it is equally replicated over all the servers which participate in a room, using a merkle DAG to enforce integrity (like git, or a blockchain).
> No extensions means no customisation for the purpose at hand or for future enhancements
This is not true. Matrix is extensible at the data level - you can put whatever you like into it and define whatever semantics for it, a bit like HTTP. But the API itself evolves as a single entity released by Matrix.org, and folks are very welcome to contribute their future enhancements into it.
> So tell me again about how matrix is so different?
A loose analogy could be svn versus git (architecturally, given XMPP is much higher perf than Matrix currently). Classic XMPP MUCs are centralised to a given domain like a svn repo; if you try hard enough you can decentralise them (FMUC), just like svk existed for svn. Or alternatively you could write a new system with different primitives like git.
I hasten to add that the analogy is not exact and Matrix isn’t remotely as successful as git, but it’s an example of where sometimes it doesn’t hurt for a different technology to come along and shake things up.