Either way, free software loses. I believe that the public interest as a whole also loses. Traditional patent licenses, which are negotiated between corporations, often return a percentage of the fee to the inventor. But royalty agreements like these just aren't compatible with a system that requires everyone to share their source code freely. In patents assigned to corporations, the inventor usually doesn't see a dime of the royalties.
Many corporations do have incentive programs to reward employees for filing patents, however.
In any case, it's important to separate out economic constraints from fundamental incompatibilities. The traditional model of free software is volunteer and unfunded. In this model, there simply aren't the resources for developers to license patents, fight bad patents, or even in most cases to file their own patents. But that's only the traditional model. There are now a lot of businesses whose fortunes are tied to free software.