Sure, but all you have to do to avoid this nightmare use the GPL. So since this encourages people to contribute their code back to the community (by releasing it under the GPL or a GPL-compatible license), I think it's a good thing.
Yes, if you use gpl'd code for free, the license forces you to share the improvements you make. That's the whole point of the GPL. No one forces you to use gpl'd code; if you don't like it, go write your own code.