I also agree that well-run agile approaches throw big up-front design out. But I think they can happily achieve solid architecture and loose coupling.
There's nothing you can achieve with up-front planning that you can't achieve by refactoring your design after a release. The main differences are that you need some supporting practices to make refactoring economical, and that you have much more information available to you after release than you do before-hand.