Commercial software development has an advantage over inhouse developed applications along the lines of the ability to maintain conceptual integrity. Requirements are normalized across many different demographics where inhouse developed applications are not.
Within enterprise applications, business rules are often determined by high-level managers and the marketing department. There may not be any apparent logical or rational to many of them from the developer's perspective and asking for it may not be an option. Marketers tend to be "intuitive" thinkers which often drives analytical geeks nuts.
Inhouse applications unlike commercial software have encoded within them, the personality(s) rather than physical or mathematical truths. Enterprise architects struggle to rationalize and devise roadmaps where predicting the future of them gets more difficult as time passes.