São poucos os cenários onde um registro realmente precisa ser deletado. Vamos levar os seguintes motivos em consideração.
1- Em bancos SQL, dependendo da tabela você precisa reordenar indices. Dependendo do tamanho da tabela isso pode ser devagar.
2- Você pode querer restituir algo que foi deletado. (Imagina que vc deletou um email no GMAIL e ele te dá 30 dias para restaurar da 'lixeira'). Essa funcionalidade depende de um soft delete
3- Você perder a capacidade de Data analytics em cima dos seus dados. Quer descobrir porque algo está sendo deletado? O que leva um usuário a fazer isso? Precisa do soft delete para isso
4- Impede auditoria. As vezes você precisa do histórico das coisas para fazer auditoria
5- O custo é baixo. Uma coluna com true or false é muito barato de se ter. Mesmo com milhares de registros.
6- ... a lista vai
A menos que por questão de LGPD ou outras legislações, eu sempre trabalharia com soft delete sempre que possível