It's ultimately a question of money. Older guys with software engineering degrees and fancy salaries can spend their weekends doing free community service in the form of open-source development. Younger people have to worry about job and rent and bills, they simply don't have that kind of free time.
Add to that the growing complexity of the software. Something that could be done by an university student before, like writing an OS from scratch, won't be nearly as useful as it would in the '90-s, because it was already done before, now you have multiple OSes to choose from. And joining an existing software project is hit-or-miss, some are inclusive and some are an old boy club where you need to know the secret rules.