People focus on the legal issues, but not the simple logistical and psychological issues that arise from the fact that while open source and commercial code may be the work of separate legal entities, in practice both types of code are written and used by the same people, either at home or at work, since hobbyist coders usually have a day job.
At every job I've had, if we're considering incorporating an open source library, the license is the first thing to check. If the project page says GPL we immediately drop the library as a consideration. If it's a commercial license then we can use it but we have to do paperwork for accounting. And if we see BSD, then we right click, download the library, and start looking into it from there. The predictable results of this process: my head fills up with information on the libraries I use, and I forget about the ones I rejected long ago.
Then I get home to my hobby project. Legally, completely different rules apply to me at home. I can release under the GPL (a choice I can't simply make for my employer), use GPL code, etc etc. My own license restrictions as a hobbyist coder are supposedly orthogonal to those at my day job. But guess what? I have to use the same brain at work and at home, it only has so many brain cells to fill up with library APIs, there are only 24 hours in a day, and I barely have time to get drunk as it is. Even though I'm at home I'll probably just build things with stuff I'm familiar with. Especially if I view the library as not being an interesting part of my application.
If my employer used the GPL for projects then I guess I'd be predisposed to use GPL code at home. I've just never worked at a place that incorporated GPL code into its projects, so I'm not familiar with it, and probably won't adopt it.
The GPL is similar to any other proprietary license, from a proprietor it creates that hires anybody, pays nobody, and is legally bound to charge nothing. But it still shares (with the actual authors) proprietary rights to all derivative works because Richard Stallman wanted to confer upon it a competitive advantage enjoyed by other, commercial proprietors. It's a very reasonable proprietary license but in the end that's what it is, and some things should not be proprietary. We still need some public infrastructure in the software industry. Users (including most of you guys) want standard software conventions that always work in a predictable way. They want to leverage their knowledge of GPL software against non-GPL software (or MS software vs. non-MS software) in ways that are totally reasonable- or they say things like "well that's not the way Microsoft does it", "that's not how GNU works", etc. They especially want uninteresting things- like command line parsing, logging, etc. to work in a predictable way. This isn't really served by forcing everyone to implement common infrastructure separately because then users have to learn implementation differences between modules that play common uninteresting roles. These rarely get addressed unless they spoil a sale. Usually they don't; they just annoy users.
While in college and before working in the real world, I was a big supporter of GPL software. Anything I did I released under that license, and I spurned other less "open" licenses.
Lately, I've done nearly no work with GPL software. I might use it as a user, but I no longer use it as a developer. Any open source stuff I write now is MIT licensed. Any open source stuff I hope to use is either BSD or MIT.
When writing a piece of open source software you need to decide what's more important to you.
If you want as many people using it, contributing to it, etc. Choose BSD, MIT, etc.
If you want to make sure nobody ever profits off of your work and any derivative of your work is forever free, choose GPL.
For me, I get more value by having more people using and contributing to my projects. I don't care if the occasional person goes off and makes money off of work I've done.