It may be the case that your job is succinctly defined as: "produce low cost solutions that meet customer needs", but that is only one of a myriad possible mission statements. In that context, your comments may well be on-the-mark, however...
I think you *may* be missing the point on a few of refactoring's core fundamental tenets.
First, it has nothing to do with "optimizing" in the typical sense of performance or response times. That type of effort is decidedly NOT refactoring. And it is far more disciplined than "tinkering" or beautifying.
Secondly, generalization is only one of many ways to redesign code to make it better. In fact, sometimes, it is better to refactor code that is too generalized (read: confusing) and make it more specific to its use. Also, refactoring and reuse are separate concerns. While I might refactor in order to reuse, I may refactor for many other valid reasons.
Finally, refactoring seems to be more common and enthusiatically embraced by "extreme programmers" and other "agile" developers who would certainly roll their eyes at the notion that you should allocate more time to requirements analysis in order to avoid the need to refactor.
It just doesn't work that way in most real-world scenarios.
Requirements arise (and change) over time; our (and our customers') understanding of a solution grows and changes over time and sometimes grows only as the system is developed or even used.
Refactoring as a disciplined approach allows this evolution to occur without leaving behind a trail of messy code that costs more to maintain than it should. And it provides customers with (at least partial) solutions more quickly than other approaches, requiring significant up-front analysis and design).
I would never recommend "tinkering", nor refactoring code that will never need to be modified (say, a one-off script to migrate some data, for instance), but...
If you have ever had to maintain, enhance, and generally "live with" an application for more than 2 or 3 major releases, then I think you could benefit from knowing how to refactor effectively.
In the end, refactored code is going to produce the lower cost solution for you and your customers.
And if that is your job, don't ignore the tools available.
I suspect from your comment, "why haven't you got another contract to make money out of your time?", that you may be a programmer-for-hire. Perhaps you write the first version, take the money, and run. I've met several such professionals and there's nothing necessarily wrong with that, but... I feel there are different priorities for programmers tasked with maintaining code. For these people, refactoring ultimately saves time and money, lowers the level of frustration, pain, and even (dare I say) monotony that can lead to lower productivity and quality.
So, everyone should consider carefully what their job is; it may differ from yours.