LAMP is the application stack, but it need not all be installed on the same host. As others have noted for performance, security or scalability purposes often these are not installed on the same host. You can also find that hardware which is optimal for one part of the architecture may not be for another.
For instance, databases are all about storage management. The faster I can get information off of the disk then the faster I can get it to the requestor. If I am sharing a disk subsystem with several other application stack members, such as a web server, the contention I face on the shared resource of the read and write heds of the disk drives can actually hinder my performance. Also, having RAM split between web server and database server on a given host may not provide a large enough resource pool for either to run in its most efficient fashion, able to cache as much information in RAM without having to go to the disk either for an image, a page, or a query result set.
Administratively there are efficiencies to be gained as well. Imagine if you run your enterprise on open source applications which leverage MySQL as a common backend. Would you really want to have database server proliferation with each app? This could be a DBA nightmare, "OK, which application uses this DB?" You would have multiple versions, mulotiple configurations of hardware/software, multiple data retention strategies. You would also likely have very diffuse administrative skills. Instead, coalesce the instances to one physical piece of hardware optimized for the role and assign dedicated resources to manage the server and its data.