Von der Logik her müsste es so sein: Weil keine Methode "addEventListener" im HTMLCollection-Objekt existiert, wird das document-Objekt herangezugen, wo sie nämlich existiert, und deshalb auch verwendet wird. Also sollten deine Eventhandlerfunktionen ans document-Objekt gehängt werden.
Bei with(document.getElementsByClassName("dropBox")) ist document ist nicht in der Scope Chain, sondern nur der Rückgabewert dieses Ausdrucks.
Allerdings ist window in der Scope Chain, das hat auch eine addEventListener-Methode. Ergo, das ganze Dokument bekommt den Handler (wie du auch sagst).
Mathias