Hola,
Mira
www.php.net/mysql_unbuffered_query . Ahi comenta como con mysql_query() todos los registros devueltos por MySQL en un buffer, que es el que libera mysql_free_result(). Por ejemplo, si tu consulta devuelve 10000 registros, cada uno con una media de 100 bytes por registro (muy poco), pues tienes un buffer de 1Mb, que ya es espacio.
Asi que si haces una consulta que devuelve muchos datos, si es recomendable usar mysql_free_result(). Para consultas pequeñas, no es necesario, ya que se libera automatica al finalizar el script.
Saludos.