yo lo haria con DOM, pero bueno... voy a tu paso.
Código:
// estas perdiendo el string antes contenido en la variable hijo;
// porque no estas concatenando el valor actual. fijate en la "asignacion";
hijo ="<tr><td>a</td></tr>";
// el return esta de más o mal ubicado, no lo he comprobado pero asumiré;
// que el interprete devuelve lo devuelto por la funcion tabla_div sin;
// asignar el contenido a innerHTML.
document.getElementById('tabla').innerHTML = return(tabla_div(num));