While it doesn't really changes the conclusions, you're a bit off the mark.
The FSF is about free people. Free software is just a mean, and they will use whatever licenses they think promotes freedom the most. That's why the GNU C standard library is in LGPL: the GPL itself would have prevented GCC from becoming popular, resulting in less freedom for the people. Also, looking at the history of GCC and the Hurd kernel, you can see they don't limit themselves to licenses.
You seem to imply that the GPL forbids you to keep your code secret. It doesn't. The right for private modification is preserved by the GPL. Only public modifications must be distributed in source form.
Companies don't contribute back to Linux because they have to. First, it's often more cost-effective to push changes upstream than maintaining them yourself. Second, monetizing private changes with GPL software is very very hard when the main distribution channel is gratis. Third people like to be good citizen. If I do changes for my company, and my company cannot possibly monetize the secrecy of those changes, why not contribute back?
If people and companies were forced to contribute back changes, they probably wouldn't use the software in the first place.
Now yeah, Linux is indeed larger than BSD thanks to the GPL.