One of my clients said the other day: "When working with a fixed fee there's always 1 party that 'loses'". I tend to agree, either it ends up more work than expected (freelancer loses), or (although in your experience that's less common) the freelancer learned from previous mistakes and overcharges.
In addition, the upfront cost of specifying the job is also lost. This is not always trivial to 0do upfront, as both the world, insights, etc change over time (hence many have moved away from the waterfall approach).