Matrix isn’t super private though. It’s halfway there, but compared to something like XMPP, it falls short due to the fact that any instance a user federates with gets a gigantic copy of all of their metadata, and the server operator can do whatever they want with it. So all you would have to do is spin up a new host, message a target user and get them to respond, and you’re done.
any instance a user federates with gets a gigantic copy of all of their metadata,
No, it does not. Instances get metadata only for the chat rooms in which they participate, not all of a user’s metadata.
When chatting with someone on Matrix like you would with text messaging, only your instance and your contact’s instance are involved. Because they have to be, in order to exchange messages. Just like every other chat protocol that uses servers, including XMPP.