Most of the time I hear programmers talk about technical debt, what they really mean is profiling and performance (because over time requirements change and code size increases) or code "cleanup" which is usually a catch-all for "not how I would have done it".
Performance issues are real, but those should just be scheduled and tackled as needed. Code cleanup is quite often a red herring.
But technical debt is entirely different. It's exactly what the name implies: debt. We would have done X to implement a given feature or customer request, because there are many conditions and other systems to take into account. But there wasn't time to do it that way before the required deadline, so we did something else instead that would get by for now, but we all know won't last.
That is technical debt.
Sadly, often times management just see the issue as done on the schedule and there should therefore be no need to go back and "do it again".
Always pay down technical debt when you can. It will be paid eventually, it's just a question of how painful it will be when you do.