If you distribute the program, you do not have to make the source publically available. Merely available to the people you distributed the program to, charging at most a nominal cost for distribution.
The effect is often to make it public because those people often have every incentive to go and post the source code. But it doesn't have to be public. And it sometimes doesn't. (An example is GPL modifications made in the course of consulting work that get distributed back to the client. The client has little incentive to release and neither does the consultant. So they don't.)
Cheers,
Ben