La deuxième version, avec le JOIN explicite et la condition de jointure est du SQL standardisé.
La syntaxe de jointure implicite avec un WHERE clause est une syntaxe obsolète (ou plutôt considérée comme mauvaise) - en partie parce qu'il est facile d'oublier le WHERE clause et provoquer un produit cartésien.