One table, two columns and the inner table gone.
<table class="punmain" cellspacing="1" cellpadding="4">
<tr class="punhead">
<td class="punhead" style="width: 185px; white-space: nowrap"><?php echo $lang_common['Author'] ?></td>
<td class="punhead" style="white-space: nowrap">
<div style="width: 20%; float:left"><?php echo $lang_common['Message'] ?></div>
<div style="float:left"><?php echo $lang_common['Pages'].': '.$pages ?></div>
</td>
</tr>
</table>
I don't run into this problem too often because I tend to use an altered version of PunBB which doesn't use cellpadding or cellspacing for borders. It also doesn't use styling on the <tr> tags which are mostly redundant and has only 1 nested table. It does however use a lot of multiple classes on the same element though that is actaully supported by all modern browsers.
In this case if you put the background colour on TD.punhead you can eliminate TR.punhead alltogether. Or, if you realy want to start optimizing things then there are always descendant selectors. Put an id on the TR tag of puntableheader, remover all references to punhead, declare a selector TR#puntableheader td {} with the background and colour settings to suit. You can now remove all references to punhead from the table header <tr> and <td> tags on all pages, replace punheadcent with puncent and delete class TD.punheadcent.