tl;dr – refusal to distribute future releases to someone that might exercise their rights under the GPL isn’t actually a violation of the GPL as I understand it.
Longer: I’m not a lawyer, nor a current employee of Red Hat. (Former, however.)
Red Hat gets to choose who it does business with. This isn’t controversial, I hope. Even the staunchest free software folks should acknowledge that the GPL doesn’t require me to sell a CD/DVD with my software on it to anyone and everyone.
I can refuse to do business with a person or company just because I don’t like them, or any other reason. So refusing to sell GPL’ed software in the first place doesn’t violate the GPL. Once I do sell or give it to you, I have to comply with its terms to provide you source code because now I’ve distributed it to you.
Therefore, it’s not a GPL violation AIUI to say “nah, I’m not giving you this binary that will obligate me to also give you source code. Go away.” A company can refuse to distribute binaries to certain geographies/countries, for example, to comply with U.S. export controls.
Red Hat’s terms don’t say you can’t distribute source under the GPL, but (AIUI) they can terminate their business relationship with you if you do that, and then you cannot get new releases under the terms.
So - they’re basically saying “the GPL says if we give you this code, you can redistribute it - so we can’t stop that. But we can choose not to do business with you and therefore choose not to distribute future code to you.”
Your rights to redistribute what you have already remain intact. Your right to receive code for what you’ve already gotten remains intact. You could stop your RHEL subscription today but still request code for releases you’ve gotten after the subscription ends, for example.
They just don’t have to continue to give you more in the future under those terms.
Whether that fits with the intent of the GPL, you can argue, but as I understand it, that doesn’t violate the GPL.