Na verdade depende.
Scripts que afetam o layout da página deveriam ser colocados no head. Isso porque, se fosse o contrário (script no body), o layout original seria exibido ao usuário e logo depois redesenhado, quando o script fosse processado.
Os demais scripts, poderiam ser posicionados logo antes da tag de fechamento , porque dessa forma a apresentação da página é agilizada.
https://stackoverflow.com/questions/143486/unobtrusive-javascript-script-at-the-top-or-the-bottom-of-the-html-code
https://developer.yahoo.com/performance/rules.html#js_bottom