No es un error. Es simplemente que el GRANT ALL no otorga permisos de GRANT.
Para que se entienda:
Darle a un usuario todos los permisos, hace que el usuario destinatario herede todos los permisos de base de datos, tales como CREATE, UPDATE, DELETE, DROP. Estos afectan
objetos en la base, pero los
permisos no son objetos de base, sino lo que podríamos llamar
propiedades sobre los objetos.
Es decir, no es lo mismo poder crearlos y destruirlos, que permitir y hacer heredar su uso. AL menos para las bases de datos.
Para que un usuario pueda crear usarios, es simplemente permiso de CREATE USER, pero para que además pueda transferir los mismos permisos que tiene, el usuario debe si o sí haber recibido los permisos para otorgar permisos, y esos no están incluidos en el ALL.
Este tipo de detalles lo encontrarás leyendo con más detalle el manual de referencia:
http://dev.mysql.com/doc/refman/5.0/es/grant.html
En definitiva, esto es:
Otra cosa que debes saber, anticipándome a lo que se te presente, es que los permisos de ejecutar stored procedures, y los para usar el LOAD DATA,
tampoco están incluidos en el GRANT ALL. DEben ser dados en forma específica.
Una nota final: La lógica de permisos especifica que un usuario sólo puede otorgar a otro usuario los mismos permisos que posee, o menos, pero nunca
más de los que él mismo tiene.
En un ejemplo: Si "juan" no tiene permisos de DROP TABLE, no puede otorgar a sus usuarios creados ese permiso tampoco.
¿Se entiende?