Это нормально, это секция массива, а не векторный индекс.Во втором случае для индексов используется целочисленное выражение массива ранга один.Расширяем ваш пример:
subroutine sub(a)
real, intent(out) :: a(:)
end subroutine sub
real :: arr(3,4)
call sub(arr(1,:)) ! Legal
call sub(arr(1,[ 1, 2, 4 ] ) ! Illegal