Ken,
>These folks are at the very top of the heap in terms of programming experience and ability. They are so good that they can intuitively diagnose problem code very quickly. When they say that code has a "smell", they aren't really expressing an off-the-cuff subjective personal opinion. They are summarizing the fact that their years of experience and very high skill levels have allowed them to quickly and definitively analyze the code and detect patterns that pose very real problems for performance, reliability, and/or maintainability...
You make it sound like the only people qualified to do eXtreme Programming are those with years of experience and very high skill levels. Are those among the qualifications for using that methodology?
Of course, I agree that years of experience does tend to help a person "smell" badly designed code almost at a glance. A more careful read-through of the code will almost surely raise red flags in the mind of an experienced developer when he/she sees code that fits the profile of "common rookie mistakes."
As for refactoring, sometimes it is the only way to stabilize a badly designed program and make it not only more stable but also more maintainable, such as when you find 14 different routines to do a customer lookup, all coded differently and scattered throughout hundreds of pages of code, but all accomplishing the same thing. (Yes, I've seen that one and immediately standardized it into one reusable block of code). Sure, there was some small amount of risk involved in refactoring it, but it was in the context of cleaning up stability problems in the app and getting the code into better shape for the long haul (maintainability was a requested feature).