Ну в принципе он ограничен файловой системой. Но это такая размытая "граница" ибо каждая таблица в MySQL (и его форках) представляется в виде разных файлов, т.е. файл это не целая БД, а только таблица. Так что в итоге границы как таковой нет. Сейчас лень искать в интернете инфу, но на память размер одной таблицы ограницен (с точки зрения СУБД, а не файловой системы) пару сотнями Гигов. Т.е. как по мне границы нет. Я хз что можно в трекере в пару сотен гигов запихать, В 1 ТАБЛИЦУ!
Оптимальных размеров нет. Вы же не запретите постить новые темы если вдруг у Вас размер таблицы постов превысит "оптимальные размеры". Есть определение "оптимальные настройки" - это уже другое дело. Т.е. подгонять настройки так чтобы производительность не страдала.
БД в принципе "оптимизируется", это можно проделать средствами phpmyadmin, там удаляется "старый мусор" (какие-то ключи которые уже не нужны. Можно попробовать дефрагментацию (не помню как правильно называется это действие в БД) сделать.
Но по сути если бы СУБД не следила бы сама за "состоянием" БД, она (СУБД) нафиг не нужна была бы. Почти с тем же успехом можно было бы работать с DB FoxPro.