Which is why it's important to get stuff like this in writing. Having a good lawyer look over my contracts has always been worth the price. Partly because my lawyer makes sure that stuff gets done even when the client and I are inclined to focus on the actual work.
This is why many OS projects now have contributor license agreements.
Be sure to read the fine print. The main point of the CLA for most corporate-backed projects is to allow re-licensing under different terms (read: proprietary). This does not require explicit copyright assignment.
On the other hand, the Free Software Foundation requires copyright assignment to give the FSF standing to defend the copyright - to enforce the GPL.
> It only provides the project with a license to use the contribution
Most projects simply specify that any contributions must be made under the same license as the existing code. The act of voluntary contribution is considered (by most) as sufficient to establish assent to this, although many projects take it a step further and require copyright statements in each file header. For projects that never plan to re-license, this works fine.
One reason for this is in case someone uses GNU code without following the GPL. With the FSF as copyright assignment, then the FSF can sue the organisation breaking the GPL. Otherwise the individual programmers would have to do it.
I don't know if this implied license is exclusive or not though.
As a contractor, you shouldn't be signing umbrella work-for-hire clauses either. They're usually part of the shotgun approach of "we own everything you do, always, ever".
Copyright assignment is where the give-and-take should take place (which I'm surprised the author didn't speak about) - "company gets copyright assignment based on XYZ (which could include payment, equity agreement, etc.)"
IANAL - I just hire one with one who protects me from signing stupid stuff and is occasionally the nasty stick when clients act up.