The idea behind the GPL is that it's free only to those who agree to advance the cause of free software. BTW, there is the LGPL that strikes a middle ground. With the LGPL, you cannot enhance and sell the library but you can sell software that depends on the library. I think that's fair.
GPL software is not designed to be free to you, it's designed to be free to everyone. With BSD software, there is much less of an impetus to put enhacements back into the codebase, so it matures slower. With GPL software, it's in your best interests to simply give your enhancements to the parent project and have them maintain it. With BSD software, it's in your best interests to keep your enhancements private.
Detractors like to compare GPL software to a virus because it makes anything it touches free. However, many pieces of commercial software have viral licensing too. A lot of libraries charge runtime royalties which is the commercial variation of the same theme.