The conclusion I come to is that it is unsustainable to offer IM for free.
Perhaps some of the things like Slack that make money at the enterprise level can afford to keep free around and working well enough to function for longer.
One of the subtle problems with offering a traditional IM service is that there are some scaling aspects that are super-linear with the number of users. For instance, as the average number of users on your subscription list increases, more of them have status changes per unit time, and each of those status changes must also go out to more users on average. The scaling issues aren't necessarily a full O(n^2) but they're often larger than simply O(n log n). Even after a many-times-over drop in the price of computing power it's still pretty expensive to offer something like that for free.
If you look around, you can see how current solutions often work around that. For instance, Slack shards everyone simply by the nature of how it works, there isn't just a "Slack handle" that anyone can ping me at. We're not all in one big namespace. There's many fewer status updates it does, too, it's a lot more selective about what statuses you get.
Another solution is Matrix; with how cheap computing power is, if a few hundred people bring their own to the party it's no big deal anymore to run a server like that, and no one person necessarily has to bring the big bucks. But if one entity tried to run the whole network, they'd certainly notice the bill.