In addition, even assuming someone is a good negotiator, they generally can live without work for far less time than a particular employer can live without an employee filling a particular role. So people will often take a less-than-optimal compensation package because a job today that pays the bills is far more valuable than a job tomorrow that has the "best" compensation package.
I'm not saying collective bargaining is the only -- or even the best -- solution to this, but it's not as simple as just saying people should negotiate more.