El problema es que "niño" puede ser adjetivo o nombre, con significados similares. Si se usa como nombre, se pone "un", si se usa como adjetivo no se usa "un". En el caso de "niño" los dos se pueden usar, al menos en el español común.
Sin embargo, la frase "cuando sea mayor" es ambigua porque "mayor" como adjetivo no tiene un significado similar a "mayor" como nombre. En cambio, si se dice: "cuando sea un mayor", está claro lo que se quiere decir, porque se refiere al nombre y no al adjetivo.
Explicación: "mayor" como nombre es un rango en el ejército.