Each table requires feeds and/or screens to add data, more code to add integrity rules, more code to report on the data and then more to search the data. A huge amount of code and more code means more errors.
The simplest soloution is to try and squeeze new functionality into existing structures but this leads to a slow rotting of the database design over time. The original developers may have understood the data in every table but they will move on and their replacements won't want to make any changes in the system they inherit.