Aqui vai uma ideia.
Se você está ordenando um array a[..] do tipo t,
vai precisar trocar elementos de posição.
Para isso você provavelmente usa uma variável auxiliar aux.
Se não for usar ponteiros, trocar os elementos a[i] e a[j] de posição seria algo tipo
aux = a[i];
a[i] = a[j];
a[j] = a[i];
Ou seja, você copia valores do tipo t três vezes.
Se t for uma struct, isso pode significar cópia de muito dado
(imagine, por exemplo, que a[i] é um clip de filme, ou um "objeto"
bastante complicado), quando você faz essa operação usando ponteiros,
precisa copiar três ponteiros--e ponteiros, em C, não são muito grandes.
Alguém mais experiente conhece outras razões?
Até,
Tássio