Non, il n'y a aucune condition dans laquelle les ensembles de résultats seront différents.
Mais votre hypothèse "a.id = b.id(+)
n'a pas de sens" n'est pas 100 % correct. Il a a signifie, car il définit la jointure, sinon ce serait un produit cartésien de a et b avec toutes les lignes de a et b.name ='XYZ'.
Ce qui n'a aucun effet, c'est le (+)
, parce que la déclaration est "sémantiquement" fausse. Cela n'a aucun sens de faire une jointure externe sur l'id mais de se joindre au nom.
Habituellement quelque chose comme ça est recherché :
select * from a,b where a.id =b.id(+) and b.name(+) = 'XYZ';
Court exemple sur http://www.sqlfiddle.com/#!4/d19b4/ 15