Having done a bit of work for a state agency here, I have to say the "fixed price" aspect is the most frustrating. Having to estimate the needs/demands of a system 1-2 years ago, and budget for it today, then earmark all that money ahead of time... argh. It's a recipe for wasteful spending. Compared to "just in time" philosophies of only paying for what you need when you need it, current procurement and budgeting strategies almost demand wastefulness be an integral part of the process.
Combine this with a culture of "if you don't spend as much this year as you did last year, you won't get all of the money you request" and we're in a never-ending cycle of bad decisions.
The U.S. uses pay-as-you-incur-costs type billing for some large projects, exactly for that reason (hard to estimate up front, would have to overprice it due to the risk), but I'm not sure it reduces waste overall. It provides a different kind of incentive, since now companies like Lockheed have a monetary incentive to drag projects on for years, overstaff them, etc. At least with fixed-price billing they have an incentive to finish the project, since they aren't going to get more money by dragging it out longer.
The government loses a lot of money by being so incredibly tight-fisted.
All costs must be approved in advance, to ensure nothing is wasted. So nobody in government can run a small project, see how it works out, then scale up if needed. It's all-or-nothing.
Ironically, governments have less to lose if budgets go a little under or over - they get pretty cheap financing, and they are a big outfit who can absorb small variances within the system (as long as it's not systematic). If a small company has a project go over budget, it can kill them. But governments (who can afford the risk) pay extra for the surety.
Combine this with a culture of "if you don't spend as much this year as you did last year, you won't get all of the money you request" and we're in a never-ending cycle of bad decisions.