Depende da abordagem. É muito mais fácil manter milhares de servidores que são os mesmos com as tecnologias atuais (ferramentas para automação de trabalho, como docker, puppet, chef, ansible, etc - centenas delas).
Ter um único servidor para cada cliente permite planejar recursos para cada cliente com mais precisão e deixá-los pagar pelo que realmente usam. Também diminui o seu problema, o que também traz algumas vantagens.
Imagine que você teria 1000 clientes em um banco de dados com 2 TB de dados no total. Seus desenvolvedores teriam que escrever consultas SQL perfeitamente para ter esse banco de dados rápido o suficiente. Esse problema é muito menor com um banco de dados pequeno para cada cliente.
Outra questão para pensar pode ser a segurança. Se você tiver que separar seus clientes no nível do aplicativo, seus desenvolvedores devem ter muito cuidado com os dados que selecionam. Se você tiver um banco de dados por cliente, haverá menor chance de vazar outros dados de clientes.
Por outro lado, ter uma única instância para todos os clientes permite que você compartilhe recursos entre seus clientes e economize dinheiro em hardware.
Portanto, essa decisão deve ser tomada no início do projeto, depois de fazer uma lista de vantagens e desvantagens. Eu também sugeriria criar alguns protótipos, então você sabe, por exemplo, processo de implantação, migrações de banco de dados, etc. não será um problema para você.
De minha experiência, eu pessoalmente sugiro ter uma instância para cada cliente se você puder lidar com o gerenciamento de muitas instâncias.