From my own experience with software development at large companies and years of talking to friends (at Toshiba, Oracle, old/new Microsoft, so on), I have my theory about this, and when it does and doesn't happen.
It's not developer incompetence, but it's not other tasks and money either. It's about middle-management incentives at most software companies. As a middle-manager, your incentives are to ship new things not to maintain old, decrepit things. And to the extent that you're working on old things, you're rewarded for shipping features, not things were implemented badly in the first place. As much as I hate working on database fucks ups like this, it's painful to programmers to have such fundamentally broken implementations lingering around, because you have to work around them all the time. You'll want to fix them.
But it's just better for your manager's career to tell upper management that the team is working on the new thing rather than tell them that you're working on making the most basic infrastructure your company relies on better, more efficient, cheaper to run, etc. The best of software publishers out there have cottoned to this, but it's sadly still common at many places.