Fragmentation is a feature, not a "problem".
If all BTree blocks is 100% full, then every INSERT will cause a costly block split, and lead to blocks that are only 50% full.
Etc.
Etc.
Do not bother OPTIMIZEing InnoDB tables.
http://forums.mysql.com/read.php?35,634129 (when is the proper time to execute optimize table command ?)
http://forums.mysql.com/read.php?20,627124 (How can I know the proper time of analyze time)
http://forums.mysql.com/read.php?20,619520 (fragmentation in innodb index)
http://forums.mysql.com/read.php?24,634146 (Deleted Records and Optimize)
http://forums.mysql.com/read.php?35,618481 (Execute table optimization concurrently)
http://forums.mysql.com/read.php?10,635519 (mysql server crashes on archive table)
http://forums.mysql.com/read.php?35,635342 (Problem with De-Fragment table)
Shall I beat the question to death some more?