The "free software" movement was created by and for developers, to support them in asserting their right to publish and share the source code they write. Whether or not that software is given away at no cost wasn't part of the mix.
From a developer's point of view, a primary reason for releasing your program for use is to get it tested and evaluated in as many scenarios and possible, and to collect the bug reports. No developer, no corporation, can accomplish the same thing by in-house testing.
A case in point is Red Hat Enterprise Linux. Red Hat is a billion-dollar company, so we can expect its resources to be greater than those available to singleton developers or businesses like Canonical. The current version of Enterprise Linux was released several years ago. It has been essentially locked down since, with changes limited to kernel patches and bug fixes. Even at this late date in its lifetime, people continue to uncover and report bugs. That's the nature of software.
If Canonical took your advice, they would need to take over development of each of the tens of thousands of applications, libraries, etc., residing on their servers and available for users.