Como han dicho otras personas, cuando pones javascript en la cabecera, se retrasa la presentación de la página hasta que se hayan cargado los scripts, lo que significa que la página puede tardar más en cargarse, especialmente si estás descargando archivos de script grandes.
Si mueve sus etiquetas de secuencia de comandos al final de la página, se asegurará de que el navegador descargue las imágenes y hojas de estilo antes de las etiquetas de secuencia de comandos y es probable que la página se muestre antes de que las secuencias de comandos comiencen a ejecutarse. Esto también significa que si depende de alguna funcionalidad de sus scripts, esto no estará disponible hasta un poco después de que la página sea visible para el usuario.
Si está agregando estilos o elementos (etc., cambiando los campos de texto con alguna forma de editor más rico), esto será visible para el usuario como parpadeando.
Si está agregando eventos de clic a elementos, no se podrá hacer clic en ellos hasta un poco después de que los elementos mismos sean visibles.
A veces, estos problemas requieren que pongas tus scripts en la cabeza, otras veces estarás bien pegándolos en la parte inferior.
En mi humilde opinión (completamente en contra de YSlow y de muchas personas inteligentes), debe mantener sus scripts en la etiqueta principal y confiar en ellos para que se almacenen en caché la mayor parte del tiempo.