It’s a syncing problem caused by the different protocols, and also by the GSM & SIM model. It’s much easier for a proper single-protocol, multi-device service to sync up messages across computers… Slack, Discord, Teams, Google Meet, heck, even Discourse itself on the SDMB, can all do that pretty effortlessly. And even offline computers only take a couple of seconds to sync up.
But because the different protocols can only be processed by the right kind of cell phone (and only with that particular SIM card), your phone has to physically receive the message first, decode it, and then send a copy of it to the sync server, which then sends it to your other devices (with some level of success). Each of those hops is a failure point. Unlike a traditional client-server model, the chat server in this case isn’t authoritative, but must rely on the client (your phone) to forward its own messages.
Without that complexity in messaging, like if a single company controlled the entire service end to end (the way Apple does with iMessage), it can all be handled serverside with much higher performance and reliability. It’s also why Google Voice can seamlessly send/receive texts across multiple computers, since Google is acting as the cell phone “carrier” in that case. (Too bad Fi can’t do the same.)
It’s the interoperability across networks that makes it difficult. Trillian, the multi-IM chat platform of yore, would sometimes have similar problems trying to sync between different chat networks, especially after any updates, but in that case it’s at least easier because it was all done via standard web technologies and networks and not cell phone lines.
This isn’t a technical hurdle, mind you, just a corporate one… if the carriers and companies all got together, they could easily solve this. They just don’t want to, because blue bubbles help Apple exclusivity and profits. Apple only started adding RCS support because of EU pressure.