I know of a company (its a US based company who has setup its shop in my city) - won't name it - which realised that its estimation was off by $200K for a $1.2M project.
This was after it had started work on the project and had hit 1 milestone.
They simply asked the client to cough up the money (which they didn't) or take a reduced feature set project for which they were paying (which they ended up doing). Needless to say, this definitely soured the relationship. I would have borne the cost myself.
But the simple answer to this is:
Depends on how much leverage you have!
Do you really, really need their work? Or are you better off not actually working and taking the hit. In the example above, the company felt that it had too much work (which it doesn't now - BTW) - and dissed the client. In other cases, you may be really hard strung for money and have no choice.
Again, it also depends on what stage the project is in.
If I am a customer, I would feel bloody cheated if after the work started (or contract was signed), the developer comes and tells me: "Oops! We made a mistake. It will cost you twice as much now!"
I ran my own software consulting company for four years and we have had this issue a couple of times - but both times it wasn't major (about 20% extra effort) and we were able to bear the expenses instead of going to the drawing board again with the client.
However, we learnt later to spend a lot of time documenting the requirements, etc. because most of the times the feature creep, etc. resulted in the client thinking of something else and you having an idea of implementing it in another way. So having a strong initial spec written by you will only reduce heartburn later on.