Perchè se dichiari un'array multidimensionale, come dice chiaramente l'errore del compilatore, devi obbligatoriamente dare un limite per tutte le dimensioni (ad eccezione della prima).
Questo perchè ogni volta che allochi un array il compilatore necessita di sapere quanto è grande ogni elemento dell'array: in questo caso, tu stai dichiarando un array di array, quindi devi specificarne la dimensione.

Dato che una stringa è un char*, puoi risolvere il problema semplicemente così:
codice:
int sposta_parola(char* parole[], int n)
dove parole è dichiarato come un array di char*, ovvero stringhe (nota che anche l'argomento argv del main si dichiara così).
In generale, se devi passare un array bidimensionale di cui non conosci le dimensioni fai:
codice:
tipo* matrix[]
oppure
codice:
tipo** matrix
Entrambe queste scritture funzionano anche con più dimensioni:
codice:
int*** matrix[]
Ricordati però che ora ogni elemento dell'array è solo un puntatore, che non punta a niente finchè non gli assegni un'area di memoria.