One reason for that is that many codebases are large and complex, and so even expert programmers won't automatically understand how to improve them substantially without a considerable amount of study. It's likely that many people will need to be paid for that investment, not because they ideologically believe that software should be property, but because it takes up a huge amount of their time and effort that they won't be able to apply elsewhere.
And indeed, when people have empirically looked into some of the larger FOSS projects they've found that a majority of the contributions were made by people who were being paid to make them—again, not because of any ideological aspect, but because being paid for it allowed them to invest a huge amount of time and focus and helped them to be more sophisticated and productive contributors.
(Edit: Just to be clear, I don't think that trying to convince people to use, develop, or procure FOSS instead of proprietary software is bad, or that, if successful, it won't also lead to more resources being applied to FOSS development. However, a lot of those resources will probably be mediated by money.)