I optimize monthly, just before my critical backups; additionally, I optimize all tables in the database.
There is however a reason to not do any tasks daily, as it locks the tables until it has been completed; which could affect users utilizing your forum at that time and corruption could start occouring should a lot of users be trying to post in that timeframe.
Gizmo, how do you optimize all tables in a database? Is there a special command for this? Please tell me you don't go through all the tables one by one with a separate command for each...
Also, why would there be risk of any database corruption if you can lock the board down before optimizing?