Australia has had phone number portability for well over 20 years. This means that for basically everyone, the phone number they had when they first got a mobile phone is the one they use today. Phone numbers are amazing in that they are simultaneously a stable code from which we can contact someone we know, but they are also abstract and therefore deniable (AKA "new phone who dis?").
What we have today is not a network effect problem, but an identity problem. Not only does XMPP give you a pretty unreliable identity, that identity, well, identifies you to everyone. Everyone knows dillekant@slrpnk.net is me, even people who aren't logged in.
Signal gets around this by piggy backing off your phone number, a thing people trust. Basically any traction Signal has is because of this piggy-backing. It can also use this technique to prevent a bunch of spamming / aid in moderation. Matrix, which the article also mentions, also gets around a bunch of issues through centralisation. XMPP servers need to do this manually, have moderation, etc. You also cannot guarantee portability the way you can with phone numbers.
One possibility is to do the same trick. Piggy back off phone numbers. Create some sort of attestation framework with phone numbers, then have some list of servers which will automatically create a UUID-named account based on that attestation. Now servers can come and go, and the client just needs to create a new attestation. This sort of works like a sea of servers and the client just uses the nearest one to create an account and fetch attestation information. However, it also has one of the biggest downsides of Signal: Needing a phone number.
The other trick is to use some sort of externalised identity framework, maybe openid or Solid, which means someone has to pay for the Solid ID, but not for the actual messaging framework. I wonder if that just shifts the problem one step over though. The big disadvantage here is that the deniability / anonymity is completely gone.
The root of the problem feels like DNS, and XMPP anchors off it. Maybe the right solution is something peer to peer, but then why not just use that as the messaging platform.