Probably to learn. To be able to say they developed part of a game that was launched to the public(I would do that if i could work on a team). To be able to rack up experience and maybe one day apply as a game developer at a reputable company.
To have something on the CV, we're still coming out of a recession (at least in the UK). You could find eager graduates who want to have some experience to differentiate themselves from everyone else.
Look at Half Life Gary's mod. Currently Valve (developers of Half-Life) hired him as a full-time level designer .
There can be many reasons; learning, fun (because they actually love the game). I'm pretty sure fun is the most important bit of it, if you game sucks I'm pretty sure no will bother.
Same goes for software, if the software is good or got potential
Open source software is not different than that, take a look at many open source developers and their motivations. Generally because they want to do something, from the scratch or on top of something else.
Open source community works the same way.
College kids want to be part of the community, while more experienced programmers looking for projects to put on their resumes.