Existem vários motivos pelos quais você consideraria a separação do banco de dados e do servidor da Web, e alguns refletirão o que já foi mencionado.
Primeiro, há o possível problema de desempenho. Geralmente, um servidor de banco de dados adora memória. Quanto mais memória ele puder alocar para armazenar dados em cache, menor será o acesso necessário para ler do disco. Então, há um benefício em ter memória. Como resultado, você pode ter um problema de contenção de memória entre o servidor da Web e o servidor de banco de dados. Com isso dito, há muitos casos em que os servidores de banco de dados estão sendo executados na mesma caixa do servidor da Web, como o MySQL ou o SQL Server Express ou até mesmo o SQL Server completo com o SQL Server 2005 Reporting Services.
Em segundo lugar, há o caso em que seu aplicativo pode usar alguns, mas não todos os dados. Isso é especialmente verdadeiro se os sistemas internos também tocarem no banco de dados. Este não é um cenário provável em um ambiente de hospedagem na web, que eu estou supondo que você esteja olhando com base em suas tags. Mas, nesse caso, você pode limitar o acesso do servidor da Web ao banco de dados apenas ao que é necessário. Sim, se o servidor da Web estiver comprometido, eles poderão obter esse acesso, mas se for um conjunto limitado de permissões, eles não poderão obter tudo. Hospede-o no mesmo servidor da web e essa é uma história totalmente diferente.
Em terceiro lugar, é possível obter algumas dicas sobre se o seu servidor da Web está comprometido, observando o tráfego de rede entre o servidor da web e o servidor de banco de dados usando o IDS / IPS. Por exemplo, se estamos falando de SQL Server e xp_cmdshell é enviado para o servidor de banco de dados, ou sp_configure, isso deve dizer ao IDS / IPS que algo está ativo. E isso fornece um aviso imediato de que o servidor da Web está comprometido.
A quarta é a separação de deveres. Se você tiver pessoas responsáveis pela implantação do aplicativo da Web, elas provavelmente precisarão de direitos escalados para o servidor da Web para fazer isso. Que tipo de direitos depende do que você está fazendo, do sistema operacional, do servidor da Web, etc., mas você entende a ideia. Se essas pessoas não tiverem acesso a tudo o que está no servidor de banco de dados e as atualizações ao servidor de banco de dados forem tratadas por um conjunto diferente de pessoas (como DBAs), elas poderão proteger melhor a empresa usando servidores diferentes.