As other people (buster) have mentioned, they feel that releasing GPL code is contributing to humanity too. Here's the difference as I see it:
You want to maximize the number of people who use your code, because that makes you feel good about yourself and your contribution.
Someone who releases GPL wants to try to maximize the good outcomes that result from their releasing that piece of code.
For example: the FreeBSD hackers get to know that their code was incorporated into OS X and used by many millions of people. That's pretty cool for them. But the contribution to humanity of their code is limited by that -- the OS X kernel's closed source, so no-one can benefit from learning how that works, and in the meantime the FreeBSD project itself is dwindling. Meanwhile, e.g. Android is based on Linux, and is available to everyone to study. Linux is growing hugely, and is an amazing example of humanity working together to achieve a public good. I can't really say the same about FreeBSD.
So, I think the question is -- is your aim somewhat selfish, in wanting to maximize the consequences that can be directly traced to you, or is it driven by wanting to maximize the consequences to the rest of your society of your actions?
If the latter, I think there's an entirely reasonable argument that says that the GPL is a better way to do it. There's no question that, as you argue, the GPL has less immediate freedom for each individual user than the BSD licenses. But why should we measure freedom for each individual, if what we care about is the final level of freedom for everyone in society?
To put it another way, I think the BSD license can result in "tragedy of the commons" scenarios where maximizing individual freedom has worse total consequences than would have resulted by applying regulation to maximize societal freedom instead.