Вообще говоря, все зависит от организации Вашего процесса разработки: если он подразумевает согласуемое с заказчиком ТЗ и последующую его неизменность (некий вариант водопадной модели). Вы можете рискнуть и сразу подписать контракт на поддержку. Но я бы этого делать не стал, так как риски изменений очень велики.
Однако, когда заказчик подписывает контракт на разработку, он понимает, что систему нужно будет поддерживать и стремится снизить свои издержки в отношении поддержки. НО! на самом деле издержки, связанные с поддержкой будут минимальны, когда снята неопределенность в отношении состава поддерживаемой системы. как минимум это означает, что контракт на поддержку должен подписываться в районе подписания акта приемки. да и для разработчика это выгоднее.
а представьте бывают ситуации, когда поддержка гарантировано будет осуществляться не разработчиком, а компанией, выбираемой на конкурсной основе. как тогда работала бы Ваша схема?
P.S. ну что ж раз Вы не хотите обсуждать организацию поддержки, то и я не буду на этом настаивать...