Counterpoint: Say I'm writing a new OS, and want to use the hardware I bought. How do I port the CUDA compiler? Porting GCC (or LLVM) should be pretty easy -- but that doesn't help me, because I can't use my software on my hardware.
This is what RMS has a problem with. You argue that if they had to contribute their changes back, we would all have been worse off. I'm not so sure. I think it's more: Nvidia could get lots of code for free and made more money, than if they had to write that code themselves. Great for Nvidia, yes -- but it's a bit of a tautology: If I give you something for free, and you can turn around and make money off it -- that is good for you. It's a bit of a stretch to say it's a lot better for me.