A "rewrite" (or at least a serious bit of refactoring) is sometimes the best way forward when you realise a soluton is not scalable.
An example of this is a painting package I write back in the 1980's. It started off as a bit of fun working on a 16-colour bitmap. When it was 20kB of BASIC code, I thought "I ought to rewrite this to make it capable of handling 16 or 256 colour images". But it was "too much work". When it was 50kB it was clear it really needed to be rewritten, but it would just take too long. So I continued adding code that relied on it being a 16 colour image, till it reached the point where it was 140kB and utterly impractical to rewrite. I always regretted not biting the bullet when the rewrite was only a few hours work.
Another example: I worked on a vector art package which broadcast events around all objects in its scenegraph hierarchy. In the initial stages it had a few tens of objects and as my manager put it, "we can broadcast to over 10,000 objects per second", so the broadcasts continued. I suggested making interested objects subscribe to the events they needed to remove inefficiency, but there was "no need". 2 years (40 man years of effort) later, the program was grinding to a halt for 2-4 seconds at a time because the scenegraph contained more like 500 objects and the 2 broadcast events had risen to 40 or so.
This pattern has been repeated in several projects I have been involved in over the years - you spot a serious design flaw or technical debt and you defer fixing it because (a) it isn't a problem "yet", and (b) it would cost too much time to sort it out now. As time goes on, it becomes linearly more of a problem, but exponentially more expensive to fix. So although it needs fixing more and more, it is harder to justify the cost of fixing it.
In these cases, the technical debt or design flaw needs to be resolved as early as possible. It takes guts (if you're a manager) or persuasiveness (if you're an underling) to hold back your schedule for a week, but imagine having no recourse but to devote 2 months to the fix in a years time!
Of course, this argument does not apply to all cases. You need to evaluate the cost/benefit of any proposed fix, and consider the scalability of the problem - if the issue is a constant, then you can fix it for the same cost at any time in the future. If every new class you add to your system compounds the flaw, and you expect to add hundres of new classes, then go back and fix it now.