Skrivet av backfeed:
Som jag minns det var det explicit standard att placera script i head, därav har jag alltid gjort så. Kan fånigt nog inte hitta någon källa på det dock.
Risken finns att jag blandat ihop det med style-taggar. Jajja. Bättre sent än aldrig att jag fick reda på hur det egentligen ligger till nu då.
På samma sätt som man inte bör nästla in speciellt mycket PHP-logik mitt i dokument för överblickens skull så var det naturligt att samla alla externa resurser "högst upp" av konvention. Dock så trumfade de praktiska fördelar jag nämnde den existerande konventionen och skapade helt enkelt en ny. Det medför egentligen inget problem, eftersom skriptfilerna fortfarande har en "dedikerad plats".
Så det fanns anledningar till den tidigare konventionen, och det finns anledningar till den "nya". Man kan notera att man genom att ha skripten längst ner slipper en hel del `onLoad`/`DOMContentLoaded`/etc.-kontroller för att få skripten att göra som man vill, men det starkaste argumentet skulle jag säga brukar vara prestandan gällande resursladdning (utöver att man aldrig bör ha det innan extern CSS, men det "gällde" även tidigare).
Skrivet av backfeed:
Då kommer förstås en följdfråga: varför laddas t.ex. jQuery alltid i head, även på jquery.org? Kanske för att jQuery inte kan vänta tills dom:en är klar?
Följ konventionen tills konventionen inte går att följa — Nytt djungelordspråk
Det kan vara av praktiska skäl så som templatesystem som bäddar in Javascriptanrop mitt i dokumentet utan möjlighet att ändra utan större omskrivningar, eller kanske någon form av AJAX-fält som kan vilja använda Javascriptbiblioteken innan hela dokumentet hunnit laddas. Det är möjligt att de har goda skäl att göra som de gör. Det är också möjligt att de inte bryr sig om "best practices" i detta fall; åtminstone inte när sidan skrevs.
En notis är också att skäl 2 i mitt förra inlägg — att externa resurser delar på två anslutningar — som jag skrev bara gäller per värdnamn, så om man använder t ex Googles CDN för Jquery så skapar det en ny anslutningstråd. Det är ytterligare ett skäl till att media ofta placeras på separata värdar på större sidor: dokumentet kan laddas snabbt, media fylls i efterhand.
Vad gäller din följdfråga gällande Jquery och DOM så kan sägas att själva biblioteket Jquery inte behöver vänta på att DOM ska vara laddad, för det gör inget aktivt (säger jag utan att ha kollat i koden, så det är upplagt för rättning, men tycker det låter rimligt). Detsamma gäller andra filer som bara tillhandahåller funktioner utan att själv manipulera DOM, så just det argumentet applicerar alltså inte där.
EDIT: Såg att det hade kommit svar under tiden jag skrev, så det blev lite upprepning av mig. Jag håller med om det som skrevs ovan.
En ytterligare notis är att det finns ett attribut som heter `defer` som kan läggas till en skripttagg, som är tänkt att säga till browsern att "detta skript ska vänta med att köras tills DOM är klar", på ett ungefär. Med detta attribut skulle DOM-argumentet kunna skippas gällande skriptplacering, men problemet är att detta attribut inte stöds av alla läsare, vilket i praktiken gör det oanvändbart. Om man laddar denna länk så borde man få alertboxar med texten "1", "2", "3" i tur och ordning om det stöds. Om det inte stöds får man i stället "2", "1", "3". I Opera/Firefox/Chrome får jag det senare (tror faktiskt bara det är IE som stöder `defer`, men har ingen browser tillgänglig för att testa. Bad andra att testa, och för vissa gav IE "rätt" resultat, men inte för alla).