Von der Logik und dem SQL-Standard her ist die alte Join-Logik eben veraltet da sie eher kompliziert wird.
Sobald man nämlich in einer Where-Klausel ein Feld auf einen Nicht-NULL-Wert vergleicht, optimiert SQL automatisch auf einen Inner Join.
Die on-Klausel ist annähernd mit einer Where-Klausel vergleichbar, aber nicht identisch. Einiges geht, manches eben nicht, z.B. scalare Subselect. Man kann aber durchaus einfache skalare Berechnungen durchführen und mit diesem Ergebnis vergleichen.
In die On-Klausel gehört erstens die Beziehung und ggf. zweitens eine weitere Einschränkung die NULL-Ergebnisse liefern darf.
In die Where-Klausel gehören dann die tatsächlichen Filter auf das Gesamtergebnis wobei eben Left-Joins nicht mehr weiter gefiltert werden dürfen, da sie sonst wieder zu Inner Joins werden da, wie Dieter schon beschreibt ein Vergleich mit NULL und einem Wert nie TRUE wird.