> Tough to penalize us because Android does not expose RCS APIs
As someone speaking from a genuine place of ignorance, the Google page relating to RCS https://jibe.google.com/ seems to imply that RCS is just a universal specification and there are a number of documents that seem relevant after a search for "gsma rcs specification".
Is this an Android permissions thing where the only practical way to implement RCS support would be through a Google-supplied API?
That being said, RCS is designed to be an open standard. It's just that only Google is really pushing for it right now and running an instance of it. If I'm not mistaken, AT&T ran their own instance for a while but it was shut down in favor of Googles instance.
Of course you could implement a full RCS client in your own app, deregister RCS in the Google Messenger app and then interface with your server of choice that way. However, this is significantly more work than just accessing the normal text messages on a phone. You'd also need to implement Google's extensions on top of RCS yourself (like E2EE encryption) and set up some kind of notification system (because you can't poll a server or listen on a socket without getting killed in the background).
It's all theoretically possible, but it's a lot of work. This is one of the reasons why Signal decided to drop SMS support all together in their app. Google could expose RCS messaging like they do text messaging, but they just... don't. Unless you're Samsung, of course; Samsung is allowed to call into the RCS APIs but other apps aren't.