I'll just chime in with some reasons that haven't been mentioned.
The database server is 64-bit only. You may have a 32-bit .Net or ActiveX component for which there is no 64-bit equivalent. Thus, you require a 32-bit app server.
Another reason you might choose to run app servers is system resilience. You may encounter a bug, either in 3rd party software, or, heaven forfend JADE, which takes your app server down. Then you have two problems, one, reading your multi-terabyte database back into memory, and two, all your users have been kicked.
Performance isn't generally seen as a driving factor in the decision.