Applied to open/closed source software, the prisoner's dilemma suggests that parties acting in their own interest will opt for closed-source software, because of the personal benefits (trade secrets, market power, etc.). Thus, even if open-source software is more efficient as a general matter, everyone will go for closed source, resulting in an inefficient outcome.
The solution to the prisoner's dilemma, of course, is contracts. By binding the hands of the parties, you can force people to choose the more optimal solution. The ideal contract adds a breach penalty that offsets whatever selfish gain may be reaped from defecting, and thereby encourages cooperation.
This is, in effect, what the GPL does: it adds a penalty to closed source software (namely, you can't use open-source with it). If open source is indeed more efficient, then developers will be willing to forego the benefits of closed source in order to take advantage of open source software.
I think that this generally summarizes what everyone else is saying ("nothing would deter an unscrupulous company from stealing open source code," "economic principle of free riders"). My own comment is offered as a general thought, not a precise cost-benefit analysis. There is much more careful thinking on this subject, much of it in the law review articles I read while in law school.