obvio pq el visibility esconde pero mantiene el lugar asignado, deberias usar display:none
o mejor aun ocultar la columna
<table width="100%" border="1">
<col style="display:none" />
<col align="left" />
<col align="right" />
<tr>
<th>ISBN</th>
<th>Title</th>
<th>Price</th>
</tr>
<tr>
<td>3476896</td>
<td>My first HTML</td>
<td>$53</td>
</tr>
</table>
proba ambos ejemplos