Could cities not do something where they pay 50% of the construction bill over the expected lifetime of the project, with a big chunk of it at the end? The cost of unexpected repairs would simply get deducted from this money.
It would mean that only big companies could take on these projects (because they'd only be making 50% of their money right away), but they could still subcontract out to smaller companies and pay them 100%.