Bien amigo, te explico.
Lo que se espera es que incluyas el código javascript en head con las etiquetas
(señalando en src la dirección y nombre del archivo)
Pero como bien dices una buena practica es que lo incluyas en el body al final del todo. El código javascript puede ser extenso y por esta razón el cargar este código puede ser tardío. Debido a esto es preferible que se cargue al final del todo, de esta manera se cargara primero lo mas importante (El código HTML y CSS) y luego la funcionalidad con javascript. De esta manera los usuarios de tu pagina web accederán y verán que la pagina carga rápidamente, pero ellos no sabrán que aun no ha cargado del todo, sino que aun esta cargando el javascript que muchas veces no representa ningún cambio visual solo funcional.
Pero entonces te preguntaras
¿porque hay algunos que lo colocan en el head?Pues existen casos en que el código javascript es necesario que cargue al principio. Como por ejemplo si quisieras hacer algún tipo de animación que solo pudieras hacer con javascript (y no con CSS que también te lo permite aunque muchos lo desconocen)
Todo dependerá de tu criterio como programador, si consideras importante que el javascript Cargue al inicio del todo, no temas puedes hacerlo, pero si crees que no es muy importante ya que lo utilizaras como validador o algo por el estilo (Que tambien lo puedes hacer con HTML5) entonces hazlo al final del todo.