To be fair, a company doesn't need to be doing a scam to fall outside the expected budget. There are many causes for budget fluctuation, for example: Inflation rates, wage changes, cost of materials, disruptions, operational errors, overtime, change requests, etc. Besides, it may not necessarily be a scam in some cases since all parties expect the cost to increase, it becomes a matter of how much of variance is acceptable to stakeholders.
Another problem in public policy is that a lot of major infrastructure/work would never be implemented if the public knew the end price tag at the start.