Acredito que você pode pensar nisso como um problema de precedência de operador.
Quando você escreve isso:
FROM groups grp,
insrel archiverel
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
Eu acho que é interpretado pelo analisador assim:
FROM groups grp,
(
(
insrel archiverel
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber
)
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
)
Se sim, então na junção mais interna "grp" é desvinculado.
Quando você inverte as linhas com "grupos" e "insrel", a junção mais interna se aplica a "grupos" e "propriedade", então funciona.
Provavelmente isso também funcionaria:
FROM groups grp
JOIN insrel archiverel ON archiverel.dnumber = grp.number
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
WHERE archiverel.snumber = 11128188