Most likely it was done that way because PhPBB did it that way (AFAIK, jForum's initial goal was to be a
Java based PhPBB replacement/clone ).
A couple of reasons I can think of doing it this way are:
1) To eventually allow for "cross postings" of the same message to multiple forums. NNTP allows this and BB code often takes a lot of tips from this older cousin.
2) This is a pretty standard DB practice when you are mapping tables to in-memory objects. Having "load on demand" object properties can be complex and problematic. It's easier, takes less memory, and faster to have a lighter weight "summary object" that maps to all the fields in one table and a "heavier" related details object.
[originally posted on jforum.net by monroe]