Not all requirements changes are of the type where you "write 20 statements
and change four". In my experience, there are many types of decisions that are going to be much cheaper to make earlier than later--regardless of your choice of process, methodology, programming language, or hairstyle.
Globalization/internationalization
Exception handling and logging policy
"Branded" versions of apps or webapps
Clustered deployment
Client type (i.e. adding a Swing client to a webapp)
IMO you'd be crazy not to plan for internationalization if there's even a 25% chance that a Japanese port is in your future--even if the only action you take is to pick a programming platform that supports Unicode. Yet the XP literature unequivocally states "Turn a blind eye towards future requirements and extra flexibility."
http://www.extremeprogramming.org/rules/early.htmlIt seems to me that this particular XP rule makes a lot of sense where you're talking about programming at a micro level--individual implementations of classes or algorithms, or even of a module/package--but less so when you're talking about high-level architecure or application-wide concerns.