There's a lot of garbage advice surrounding when to optimize tables.
If by 'overhead' you mean free space, keep in mind that InnoDB naturally leaves pages on 93% full (15/16) to leave gaps for later updates.
When you optimize tables, it also does not actually recreate them in an optimal way. It recreates the table definition and then copies the data into it row-by-row. Primary key indexes are not fragmented this way - but secondary keys may be (since they may be inserted out of order causing pagesplits/fragmentation from day one).
Baron writes a good post on this here:
http://www.xaprb.com/blog/2010/02/07/how-often-should-you-use-optimize-table/