Renegotiating a fixed price is generally a much harder conversation to have. You're effectively having to say "I can do this for $12,000...well, I could do that for $12,000 but you just changed the goal, so its $15,000 now."
With hourly it has always been an easier conversation for me. The estimate is pegged to time, and if change requests come up its easier to see what happened. With they said, I'm pretty generous on actual hours worked if the client doesn't ask for anything different and I simply under estimated the work needed for a job. I'll bill fewer hours when its obvious they my estimate was just wrong.
Why not a new fixed price for each change?