Because dereferencing cheaper than index computation.
But modern compilers can generate equivalent code whether you use array indexing or pointer arithmetic.
for (i = 0; i < N; i++) a[i]... becomes endOfa = &a[N]; for (p = a; p < &endOfa; p++) *p ...