As has been said: "Premature optimization is the root of all evil." Database programs are designed to handle huge datasets, and if you have performance problems it's probably due to not having indexed a column that should be indexed.
When you have separate tables for each forum, you have not only cluttered up your data environment, you have interfered with obvious functionality, such as moving a message from one context to another, directly retrieving a specific message, searching all messages globally, counting the current number of messages on the BBS system ... and for what? Insurance against the day you get two million messages on a single topic?
There is a good (heavy, but good) column on database normalization and design techniques here:
http://www.phpbuilder.com/columns/barry20000731.php3