I find myself leaning more these days towards the view that the whole "eventually consistent JSON database replicated across all participating servers" thing is maybe too much of a reach. One big reason is that I think the challenges of moderation put a cap on how decentralized any usable communications system can be, so decentralizing things beyond the level of moderation doesn't actually add much, and can in some ways make things worse.
It's abundantly clear that you can't run any kind of public anything on the internet these days without some sort of moderation. It's also clear that moderation ultimately requires humans making decisions; you can have bots reacting in various ways to filter spam but you always need humans at the top who can override and tune those bots. For public forums, the capacity of those humans to keep things running in a sane manner is the bottleneck on centralization, not any technical decentralization of the protocol.
What this means is that if you have a chat room with a three-person mod team, there is not much to be gained by having the underlying protocol decentralized across the servers and/or clients of all 100 or 500 or 10,000 users in the room. Everything that every user sees is already subject to the decisions of the three mods and is therefore effectively "gatekept". Moreover, what it means for the room to be healthy is that all those users are basically satisfied with the moderation, which means that letting unmoderated traffic flow in a free and decentralized manner is actually not what people want --- it just means they'll see more spam.
A possibility to explore would be something that has some kind of partial or two-tiered decentralization in which (within the context of a given room) moderator servers have different status than ordinary-user servers. This might mean, for instance, that non-moderator servers simply trust moderator servers about state, rather than every server doing the full state resolution for every room. It could also mean that when moderation is overwhelmed by a flood of spam, there is a mechanism that can throttle traffic to the non-mod users, so that the room just appears quiet, rather than the whole flood of spam being replicated to everyone.
This idea is half-baked but I feel like something along these lines could mitigate some of the worst cases I've seen on Matrix, which can arise when the spam effectively DDoSes the moderators and the moderation actions (such as redactions or bans) become stuck in the processing queue behind spam messages.
In any case, though, it's clear that moderation needs to be baked into the protocol at a lower level than it currently is.