There are a lot of games you can play to make say rent look like a cost on a contract while another entity makes a profit from that rent. Worse you still have incentives to offload costs onto a contract. For example someone finishes an unrelated contract your might as well move them to a profit + contract rather than benching them or immediately laying them off.
In the end markets simply aren’t efficient without pricing information. If you can’t get someone to bid a fixed price you might as well keep in in house.
Those games you play are a lot easier to deal with oversight-wise. I disagree with your conclusion. You're assuming in-house doesn't have the same perverse incentives. Also, pricing information can be impossible to discover. You often hear on HN how nobody can realistically estimate large software programs. Under that regime, what good is a firm fixed price contract? What'll happen is that the company, once it goes over-budget, will stop work and/or go bankrupt depending on the legal contract it signed. Then the client has no choice but to add more money into the pot - which suddenly sounds like a cost+ contract.
I have worked on plenty of successful fixed price software projects. The simple reality is when you fix costs quality becomes the flexible metric, but meeting the minimum project goals becomes really important. However, considering how many software projects fail, reaching the agreed upon minimum at the agreed upon price is vastly better than what generally happens.
As to failing to finish a project the wonders of fixed price contracting is you can pay at completion of some milestone. Of course that means people need to pad the price even more ahead of time to assume that risk, but price becomes a really useful signal.
In the end markets simply aren’t efficient without pricing information. If you can’t get someone to bid a fixed price you might as well keep in in house.