Unfortunately, all too true. Developers tend to steal from the future to have something to show for the present.
The upfront cost of code quality is high, but I agree is the better long-term play, so the investment is easily worth it. Management isn’t blind, so why does it still happen?
A development manager once told me that their company wouldn’t be where they are without all of those corner cutting decisions they have made. If funding is a problem (especially for smaller companies), I can see this is a trap that they feel stuck doing.
A problem with accepting this excuse is that what’s often “temporary” always becomes permanent, and code quality is deferred indefinitely. Secondly, a lot of the worst tech debt I’ve seen, does not look like it was a conscious decision. E.g. poor architecture that makes unit testing impossible without a rewrite or nontrivial refactoring.