There is a pretty good argument that this should be required for copyright protection. The point of copyright is supposed to be to ultimately get works for the public domain, when the copyright expires. If the source code has never been released then it's failing at its purpose. Once a work is in the public domain the public is supposed to be able to make derivatives etc. So to have copyright protection for software you should have to release the source code.