There is an argument that the GPL can be used by companies as a tool to discourage free riders on Free Software projects, but that if you don’t care about punishing free riders you should just use a BSD-style licence instead. This argument is incoherent and suspect.
Free Software is a matter of ethics, not economics. The GPL is an ethical tool, not an economic one. It exists to promote the freedom of individuals to use software, not to prevent the economic exploitation of source code by competitors.
In economic terms, anyone who doesn’t contribute to the production of the code but still uses it is a free rider. This means that any user of the software who does not also hack on it is a free rider. Given that there are many thousands of packages in the average modern free software operating system distribution this means that *all* users are free riders not just on one project but on many if not all of those that they use.
This is at odds with the idea of Free Software, where freedom is not limited to hackers (or rather their bosses) but is something for all users of software. Saying that free riders are bad mis-characterises the issue as economics not ethics and makes “open source” opposed to user freedom.
Don’t ask whether or how to punish free riders. Ask how to promote individual freedom. It is this individual freedom that the GPL is designed to protect. It isn’t designed to punish free riders. The real free riders are those who wish to benefit from freedom without passing it on. They always prefer non-copyleft licences because those licences don’t require you to respect the freedom of the very software users that free software is for.