las dos columnas toman el tamaño de lo que contienen,
ni a la tabla anidada ni a sus columnas en ningun momento les asignas un ancho fijo, solo lo haces para la tabla principal width=100%
Código:
<table width="100%" style="height: 575px;">
<tr style="height: 175px;">
<td style="text-align: center; vertical-align: middle;">
<b style="font-size: 31px;">texto<b />
</td>
</tr>
<tr style="height: 400px;">
<td style="text-align: center; vertical-align: top;">
<table width="?????">
<tr>
<td>
<a href="enlace.php">enlace
<p><img src="foto.gif"><p /></a>
</td>
<td width="?????">
<a href="enlace.php">enlace
<p><img src="foto.gif"><p /></a>
</td>
<td width="?????">
<a href="enlace.php">enlace
<p><img src="foto.gif"><p /></a> <<------- este
</td>
</tr>
<tr>
<td>
<a href=".enlacephp">enlace
<p><img src="foto.gif"><p /></a>
</td>
<td>
<a href="enlace.php">enlace
<p><img src="foto.gif"><p /></a>
</td>
<td>
<a href="enlace.php">enlace
<p><img src="foto.gif"><p /></a> <<------- este
</td>
</tr><tr>
<td colspan="3">
<a href="enlace.php">enlace
<p><img src="foto.gif"><p /></a>
</td>
</tr>
</table>
</td>
</tr>
</table>