i think that is the right way to think on most software projects. But on projects that require rapid iteration and user testing(such as hit-based projects like games), technical debt could cause your iteration rate to be slowed to a crawl, and in the end you produce an inferior product.
Had the technical debt been paid up front, the iteration rate might have been much faster (e.g., good encapsulation and abstraction allows you to switch out things quickly to test different mechanics in a game), leading to a better end product that people will pay for.
Had the technical debt been paid up front, the iteration rate might have been much faster (e.g., good encapsulation and abstraction allows you to switch out things quickly to test different mechanics in a game), leading to a better end product that people will pay for.