Your analogy falls flat, because building software is not the same as building a house. In fact, unusual construction projects with unknown dependencies and shifting requirements are just as unplannable as software development, and are just as liable to go over budget.
I know construction projects regularly go over budget, but they still give estimates. That's my entire point. Why do software engineers feel their domain is special.
Projects across all domains face the same problems we do and yet the only domain I can think of where it's normal to not provide an estimate for work up front is US health care pricing and just about everyone has a pretty major issue with the way that is run.