O lock-in é real, e acho que o ponto central é que o Next.js misturou roteamento com infraestrutura de servidor de uma forma que depende muito do ambiente da Vercel pra funcionar bem. Fora dela, você precisa de um Node rodando a aplicação inteira, e qualquer escala horizontal vira trabalho manual que o framework não foi desenhado pra facilitar.
No BloodLink uso Vercel ainda sem sentir o peso disso, mas sei que é um teto estrutural. A escolha de React puro + NestJS que você descreve faz sentido quando o time já tem maturidade pra gerenciar as duas camadas separadas sem a abstração em cima.
A velocidade inicial do Next compensa até um certo ponto de escala. Quando esse ponto chega, o custo de sair do happy path da Vercel pode ser maior do que teria sido começar separado.