C'est la notation spécifique à Oracle pour une OUTER JOIN, car le format ANSI-89 (utilisant une virgule dans la clause FROM pour séparer les références de table) ne normalisait pas les jointures OUTER.
La requête serait réécrite dans la syntaxe ANSI-92 comme :
SELECT ...
FROM a
LEFT JOIN b ON b.id = a.id
Ce lien explique assez bien la différence entre les JOIN.
Il convient également de noter que même si le (+) fonctionne, Oracle recommande de ne pas l'utiliser :
Oracle vous recommande d'utiliser le
FROMclauseOUTER JOINplutôt que l'opérateur de jointure Oracle. Requêtes de jointure externe qui utilisent l'opérateur de jointure Oracle(+)sont soumis aux règles et restrictions suivantes, qui ne s'appliquent pas auFROMclauseOUTER JOINsyntaxe :