I agree this is a common problem, but not for the reasons you list. The best software that I have read comes from experienced programmers, who through education and enumerable amounts of experience can construct robust designs that are elegant, powerful and scalable. Every engineer can bring ideas to the table and it is important for a work environment be conducive to criticism, design discussions and most importantly change.
My suggestion is to change his code and comment it as much as possible. Sometimes people don't get the point and if you have to live with their mess, do yourself a favor and fix it. I do this everyday, fix other people's code, mumble to myself and then move on.