Scalability: numerous servers vs. powerful servers

My understanding is as follows:

Typically, we horizontally scale the web server (more low-end machines) and vertically scale the apps and database servers (high end machines). Then redundancy (high availability, disaster recovery) will dictate how many app servers and database servers will be required in your architecture.

This is based on my experience with a fairly high volume web site running on J2EE.