A refatoração, como qualquer outra atividade, deve ter uma meta clara definida para ela. Quando esse objetivo estiver claro, você deve considerar o status atual do projeto e o estágio do ciclo de vida. Para um projeto de desenvolvimento com 80% de conclusão e 30% de atraso, você deve justificar o esforço de refatoração com base na meta definida anteriormente. Neste exemplo, se as partes do código foram testadas em unidade e estão funcionando bem em um ambiente de desenvolvimento, é difícil justificar a refatoração.
O fato de restarem 40 desenvolvedores pode não ser tão dramático quanto parece. Eu esperava que esses desenvolvedores entregassem código de trabalho que foi revisado e testado. Portanto, a menos que haja problemas conhecidos nesse código, eu o deixaria como está. A idéia é que, em um projeto grande como o seu, eu esperaria que houvesse padrões e procedimentos e que o código não fosse uma bagunça completa.
Lembre-se de que a refatoração fará com que muitos, se não todos, os testes que foram feitos sejam repetidos. Além disso, como a refatoração desse tamanho não pode ser feita por um ou dois membros seniores, a refatoração pode apresentar problemas que não existiam. Este é um risco que não deve ser negligenciado.
Dito isto, não é incomum adicionar tarefas a um projeto quando o imprevisto acontece. Portanto, se os desenvolvedores desaparecerem por algum motivo, isso seria considerado um evento de natureza especial e quaisquer ações para remediar a situação devem ser tomadas. Seria tratado como um incêndio ou um terremoto, etc.
Em resumo, eu não refatoraria código de trabalho grande em um projeto grande por nenhuma razão técnica sólida, especialmente porque todos sabemos que a maioria dos projetos geralmente está em status tardio.