The messages are stored on a decentralized node system.
Currently, there's only one running but the goal is to make it that anyone can run it.
I think the main reason why they aren't storing messages on chain is to be able to run the system without it requiring RC, but I could be wrong.
@mirafun is the main developer on this protocol specifically and can likely speak to the reasons for how it's currently setup.