Software development seems to be about change: the business changes and we need to reflect those changes, so the requirements or specifications change, frameworks and libraries change, so we have to change our integrations with them, etc. Changing the code base accordingly is often quite painful, because we made it resistant to change in many ways.
As an example, I consider it very painful if I can't rename a class, or change its namespace.
Another reason could be that the framework expects the class to have a certain name, be in a certain namespace, and so on.
There's another application using the same database, which can't deal with extra columns that it doesn't know about