Olá Djalma,
esse problema do cliente não concordar com o que foi desenvolvido acontece com frequência. Ele era mais acentuado nas metologias anteriores em que o projeto só era entregue no final, porque apenas depois de meses de desenvolvimento a equipe recebia o feedback do cliente e muitas vezes era de que o sistema não atendia a sua necessidade. Já a questão do orçamento depois da falha do projeto dependia um pouco do acordo da equipe com o cliente. Em alguns casos o cliente investia mais dinheiro e a equipe refazia o trabalho, com potencial para falhar novamente. Mas muitas vezes o projeto era dado como encerrado e o cliente acabava insatisfeito com um sistema que não resolvia o seu problema.
Os métodos ágeis vieram com uma outra abordagem de desenvolvimento voltado para entregas frequentes. A todo momento o time entrega uma nova funcionalidade para o cliente testar e acompanhar se o projeto está satisfazendo suas necessidades. Caso alguma parte do projeto não esteja de acordo com o que o cliente espera, como as entregas são pequenas e frequentes o time consegue rapidamente se adaptar a situação e refazer uma pequena parte do sistema, o que pode não afetar tanto o orçamento do time.
Uma abordagem que algumas empresas ágeis fazem para facilitar no planejamento do projeto e do orçamento é estabelecer contratos mensais. Como as entregas são frequentes, mês a mês o cliente consegue avaliar se o projeto está evoluindo do jeito que ele espera e decidir se vai renovar com a equipe para o próximo mês.