Hay muchas formas de pelar al gato, básicamente tu problema es controlar el HTML, nada más tienes que controlar las iteraciones del ciclo que lo genera:
Código:
<table>
<tr>
<%
i = 1
do until rs.EOF
Response.Write("<td>"&rs("campo")&"</td>")
i = i + 1
if i = 4 then
Response.Write("</tr><tr>>")
i = 1
end if
rs.MoveNext
loop
%>
</table>
Hay otras cosas que deberias controlar, como cuantas celdas faltan por llenar, etc, pero más o menos esa es la idea, no lo probé así que a lo mejor genera uno que otro extraño, pero básicamente usa un acumulador para determinar cuando cambiar de renglón.
Saludos