My understanding is similar, i.e., a comma-separated sequence (w/o parens) does not represent an expression in Fortran, and if so, the extra parens seem to be allowed only as an extension. I’ve tried several other patterns also (using Compiler Explorer), and it seems whether extra parentheses are allowed or not seems rather ad-hoc (context-dependent and not systematic).
program main
implicit none
integer x(3),y(3), dum1, dum2, dum3, N, i
character(100) string
N = 3
string = "-1 -2 -3 10 11 20 21 30 31"
read(string,*) ( (dum1, dum2), dum3 ), (X(i),Y(i), i=1,N) !! pass(ifx), error(gf,fln)
read(string,*) ( (dum1, dum2), dum3 ), ( (X(i),Y(i)), i=1,N) !! pass(ifx), error(gf,fln)
!! read(string,*) ( ( (dum1, dum2), dum3 ), ( (X(i),Y(i)), i=1,N) ) !! error(ifx), error(gf,fln)
print *, x(:)
print *, y(:)
print *, (dum1, dum2), (dum3, 200), (100, 200) !! pass(ifx), error(gf,fln)
!! print *, [(dum1, dum2), (dum3, 200)], (100, 200) !! error(ifx), error(gf,fln)
end