But the spirit of the GPL was very much to be able do what old CentOS did: copy the latest version of RHEL that you were given access to and distribute it to others.
Paying RedHat once shouldn't give access to all of the code they will forever release from now on. But, if you want to keep paying, RedHat should keep taking your money and giving you the new code. They should not punish you for exercising your GPL rights by refusing to do business with you.
And Rocky are doing things that very clearly go against RedHat's wishes and will likely be stopped further down the line. They are "exploiting" the fact that RHEL for containers is released publically, not through a developer subscription, and that of course they are forced to give you the source code if they delivered a container to you. I'm fully expecting RedHat to close this "loophole" down.
I believe Alma Linux has taken a different approach and is no longer promising bug-for-bug compatibility with the latest RHEL. They are planning to start maintaining the RHEL code themselves, and take new patches from RedHat's CentOS Stream to try to match RHEL as closely as possible, if I recall correctly.
Maybe, but the GPL explicitly permits this by only requiring source to be distributed to those who receive the software.
If, instead, the GPL stated that source must be available to everybody when software is distributed to anyone, we maybe wouldn't have this RHEL situation? What would we lose if that were the case?
I think the main reason the requirement to publish the sources is limited to the person who receives the binary is simply practical. For one, there is basically no way to sue as a third party to a contract - even if the contract required you to publish all of your code openly, someone who didn't receive the binary can't really have standing to sue if you just don't publish it. Also, at the time the GPL was created, sending source code carried some measurable cost, so making it public would have been at least mildly expensive.