I would not tell them if you do not need the money. If you do tell them, they don't get a good impression because:
- As you mention, they will think you can't estimate correctly.
- They may think you will be willing to work for free and take advantage later.
- They won't respect you and your time and take you seriously.
As a result, you may come accross as unprofessional. You want to be professional and the client must respect your time and your opinion.
If the client is a long standing client, there is nothing wrong with giving them a few extra free hours if they are giving you lots of work and you have a good relationship with them.
Ultimately, you are running a business and telling them about this unnecessarily undervalues your ability and professionalism in their eyes. Mis-estimating is a very damaging business practice in the long term and tells the client that you don't know what you're doing. Even if that's true, and it's true for everyone starting out, pretend like you do and you'll get there.
While working hard is a good quality in anyone, it is something people look for in employees more than contractors. For the most part, the client only cares if the work is done on time and the right price. How hard you work to get there is irrelevant. As a result, it's in your interest to work smart.