I'm not a fan of the GNU GPL for most cases, but your statement isn't quite correct. You are required to give out all of your changes to anyone to whom you distribute asks.
If I am a downstream ISV that has code under the GNU GPL because of upstream incorporation and sell my software to users, only those users I sell my software to may legitimately ask for a copy of the source. I cannot restrict them from giving it away or sharing it, but I don't have to honour all requests for the source and my modifications—just the ones from people I've distributed the software to.
Most businesses that use GNU GPLed software choose to either link to the upstream and host local patches, or host their custom distribution entirely, effectively giving the software away to everyone. They aren't required to do so by the terms of the license.
If I am a downstream ISV that has code under the GNU GPL because of upstream incorporation and sell my software to users, only those users I sell my software to may legitimately ask for a copy of the source. I cannot restrict them from giving it away or sharing it, but I don't have to honour all requests for the source and my modifications—just the ones from people I've distributed the software to.
Most businesses that use GNU GPLed software choose to either link to the upstream and host local patches, or host their custom distribution entirely, effectively giving the software away to everyone. They aren't required to do so by the terms of the license.