Matrizes e ponteiros não são a mesma coisa em C, embora estejam relacionados e possam ser usados de maneira semelhante. Até agora todos concordamos.
No entanto, não vejo por que matrizes foram incluídas em C, quando ponteiros poderiam ter feito seu trabalho perfeitamente.
Não estou dizendo para remover a notação da matriz (por exemplo, a [5] ou int a [4] = {0,1,2,3};), o que é bastante útil e conveniente. Mas você pode ter essa mesma notação trabalhando em cima de ponteiros (como é o caso), como uma medida cosmética. Portanto, a notação de matriz não é um motivo para ter matrizes, apenas a notação!
A única diferença que vejo é que as matrizes são ponteiros constantes e o tamanho da memória para a qual elas apontam não pode ser alterado. Mas isso também pode ser alcançado com ponteiros, exatamente tornando-os constantes (a memória não seria de tamanho fixo, mas não tenho certeza se isso é um problema).
Então, por que não ter apenas ponteiros e deixar o programador decidir como o ponteiro deve se comportar (ou seja, constante, não constante, tamanho fixo, tamanho variável, etc)?
x = a + b * 2;
quando você pode obter o mesmo com uma sequência de expressões simples como x = b; x*=2; x+=a;
?