I'm having a hard time making sense of the code dealing with @table and @item, partly because of the naming:
table_term table_item table_entry Those containers appear in C<@table>, C<@ftable> and C<@vtable>. A I<table_entry> container contains an entire row of the table. It contains a I<table_term> container, which holds all the C<@item> and C<@itemx> lines. This is followed by a I<table_item> container, which holds the content that is to go into the second column of the table. I think it would be improved by renaming table_item. It's confusing because table_item doesn't contain @item, and "item" and "entry" mean pretty much the same thing in English. I'm going to change it to table_definition.
