Законно преобразовывать указатель-не-const в указатель-на-const.
Тогда почему нет права конвертировать указатель на указатель на не-const на указатель на указатель на const?
Например, почему следующий код является незаконным:
char *s1 = 0;
const char *s2 = s1; // OK...
char *a[MAX]; // aka char **
const char **ps = a; // error!