Lo que pasa es que con la función imprimir cada que se ejecutaba el ciclo en el for anidado, indicaba que debía agregarse un salto automáticamente después del asterisco y cuando pasaba al siguiente ciclo se imprimiría debajo del anterior y así sucesivamente. Pero lo que se quería lograr era imprimir un asterisco uno tras otro, en el mismo renglón y al cumplir la condición de diez saltar al siguiente. Cuando el contador llega a 11 el ciclo termina y ahora se imprime el salto que se encuentra afuera del for anidado. Después se incrementa en uno el for exterior y vuelve a iniciar el ciclo del for anidado.
Esta es otra explicación: Primero tenemos un ciclo for que realiza cinco iteraciones pero no imprime nada. Lo que se indica con esas cinco iteraciones es el número de líneas (5) y en cada línea debe imprimir diez asteriscos. Entonces cuando realiza la primera iteración hace que se ejecute el otro for (el for anidado) que debe realizar diez iteraciones y en cada iteración debe imprimir un asterisco, pero como son diez, es por eso que imprime diez asteriscos, seguidamente viene un salto de línea. Luego se realiza la segunda iteración del primer ciclo y nuevamente hace que se ejecute el for anidado que debe realizar diez iteraciones y en cada iteración debe imprimir un asterisco, pero como son diez, es por eso que imprime diez asteriscos, se realiza otro salto de línea; y el primer ciclo sigue iterando de la misma forma hasta llegar a la quinta iteración para que se forme la quinta línea. La función 'imprimir' se puede utilizar pero se le debe eliminar el llamado que hace a la función 'saltarLinea', es decir se debe borrar la instrucción 'saltarLinea()' que tiene dentro, es por eso que al final del ciclo anidado, se debe utilizar la función 'saltarLinea()', porque es en ese momento que debe realizar el salto de línea y no cuando se este imprimiendo cada asterisco. Si se utiliza la función imprimir tal como siempre se ha utilizado, nos va imprimir en el navegador 50 asteriscos uno debajo del otro y la idea es que imprima diez y ahí sí haga el salto de línea.
Si se utilizara la funcion imprimir("*") entonces cada asterisco saldria en una linea debajo de la otra por que dentro de dicha función esta incluido la funcion de salto de linea saltarlinea() . Por el contrario al utilizar un document.write("*"), este no contiene ningun salto de linea por lo cual imprime todos los asteriscos en la misma fila uno a continuacion de otro.