Не уверен, почему в FF происходит странное поведение, но решение состоит в том, чтобы создать две таблицы и поместить вторую внутри div.
HTML:
<table>
<thead>
<th>One</th><th>Two</th><th>Three</th>
</thead>
</table>
<div>
<table>
<tr><td>Item</td><td>Item</td><td>Item</td></tr>
<tr><td>Item</td><td>Item</td><td>Item</td></tr>
<tr><td>Item</td><td>Item</td><td>Item</td></tr>
</table>
</div>
CSS:
table {width:100%;border-collapse:collapse;}
div {height:200px;overflow:auto;}
th {width:33%;}
td {border-bottom:1px solid #f00;width:33%;}
Я добавил определенную ширину к ths и tds, чтобы обеспечить выравнивание столбцов, так как они находятся в разных таблицах, но вам, возможно, не придется указывать.