Ich hab das Script vor mindestens 11 Jahren geschrieben. Client-side ist es, weil es keinen Sinn macht dass jedes Bild erst einmal auf dem Server runterladen dann noch einmal auf dem Client geladen wird. Serverseitig die Bildergrösse zu berechnen würde die Response unnötig verlängern.
Keine Ahnung ob es damals eine bessere Lösung gegeben hätte, aber client-side ist das Hauptproblem, dass du die Bildgrösse nicht hast, bevor der Browser nicht das Bild geladen hat. Deswegen der DOM `onload` Event, der wartet bis alle Bilder geladen sind. Es scheint ein per-Image onload event zu geben, vielleicht könnte man das an jedes DOM Element rankleben, falls das tatsächlich schneller reagiert. Keine Ahnung warum ich das damals nicht so gemacht habe, vielleicht zu Unerfahren, vielleicht hatte es gute Gründe und der Event war in den Browsern vor 11 Jahren nicht supported. Wobei selbst partiell geladene Bilder Überbreite erzeugen können, das heisst es bräuchte eigentlich einen Event für "Bildergrösse ist jetzt bekannt", selbst wenn das Bild noch lädt. Keine Ahnung wie schwer das ist.
Inzwischen könnte an das ggf. gut mit CSS lösen, vermute aber dass das vor 11 Jahren mit IE7 Support weniger eine Option war.
Prototype ist im Einsatz weil es vom MyBB bereits auf allen relevanten Seiten mitgeladen wird. JavaScript vor 11 Jahren war ohne Framework ziemlich Kacke, und extra ein neues Framework wie JQuery (damals in Mode) zu laden für den Bilder-Resize ist jetzt auch nicht elegant. Die Wahl von Prototype würde ich auch heute noch verteidigen.