Signal is the opposite of an open-standard, there's a single server implementation and basically three clients (Android, iOS, desktop) and they discourage people from using other clients. Best way to think about Signal is that it's just WhatsApp with some marketing on top.
Meanwhile, I can link a raspberry pi anywhere in the world to my XMPP server with a few lines of Python and some libraries.
> Some developers claim not to track users -> Same applies to Signal.
Both cannot be verified by the users, but as an admin, I can verify that my server isn't tracking users.
> Decentralized -> The first difference, and here we can write another article on why decentralization doesn't magically add any security or privacy.
It does certainly help not to have all of your eggs in a centralized basket, both in terms of privacy and reliability.
> Users can choose a username, doesn't need phone number -> Second difference, which doesn't apply to all XMPP clients as some may require your phone number
Do not know of a single XMPP client that requires a phone number - some random server out there, maybe.
> and if we assume people can choose a non-identifiable username, then we can also assume people can choose a non-identifiable phone number. User may not be identifiable -> Another vague statement without any explanation that we can just assume the same way for Signal.
You'll find most people will tell you that you need ID these days to get a SIM card. Creating a new XMPP account takes less than 5 seconds.
> Presence status shared with others (without mentioning that server admins can see this, too) -> Signal comes without this feature.
The user can disable these, personally I find them useful on my server and miss it sometimes when I use Signal.
> Only nicknames exposed in MUCs (again without mentioning what MUC admins and server admins see) -> Signal lets users decide if they want to share their phone number and username with groups.
Signal doesn't, all phone numbers of group members are visible to people within the group.