Overhead is created when you edit or delete data in a table, and it is basically "gaps" in the database file where data used to be. You can optimize the table to get rid of the gaps - a process similar to defragmenting your hard drive.
It should be noted that table optimization is only really necessary on huge tables, or tables that are edited and accessed extremely aggressively. Unless you are doing something at the enterprise level, it is unlikely you will get much of a performance gain. I like to optimize my tables once a year, and that is probably more often than necessary.
If you work with binary data, you might prefer to optimize more often, because you are talking about much larger chunks of information.
Keystone Websites | si-blog