Reduction specifier for do concurrent

The Fortran 202x standard adds reduction specifier for do concurrent. Why cannot reductions be automatically inferred? If I need to use reduction specifiers for do concurrent, why not simply use OpenMP? They look equally verbose.

In addition, I feel like it will be much less verbose if reduction speificers can be fused.
do concurrent (i = 1, n) reduce(+:a, b, c) reduce(max:d, e, f)
=>
do concurrent (i = 1, n) reduce(+:a, b, c; max:d, e, f)