Isn't it really simple? If I change GPL'ed source code I have to make the altered sources available to those I distribute my binaries to (my customers). So if I have a customer, I can just give him a cd with the source code and be fully compliant. No need for a VCS or online repository at all - I can even have him pay for the cd and the work to burn it. The customer's right and ability to change the code to his liking isn't impaired by that - on the contrary he gets a code archive that I can at least make certain assurances for (like: if you have a given environment, just type 'make' and you're done). Yes, it is not comfortable for people making their own forks, and yes, it might not be 'playing nice' - but the other players (like in Red Hat's case Oracle and Novell) aren't either.
As a developer I don't have to push my changes upstream (something Red Hat is still doing for quite a lot of stuff), I don't have to actively support forks and make life easier for my competitors. In the end Red Hat, too, has to make a living somehow in order to continue being able to pay developers to contribute.