I see where you're coming from, and I don't disagree, but the advantage of the existing behaviour is that, as a human reader of the code, I don't have to strip off too many leading zeroes to work out what the character might be.
It boils down to a tradeoff - even if we allow you to use 16 hex digits to write Unicode escapes, you can still only write valid codepoints, which in today's compiler is numbers from 0 to 0x10_FFFF. The only benefit from allowing more characters is that you can write those codepoints with extra leading zeros - so you can write the same character as \u{1f980} (no leading zeroes, allowed today), \u{01f980} (one leading zero, allowed today since this character is in plane 1), or in future as \u{000000000001f980} (11 leading zeroes, or 16 hex digits).
As leading zeroes have no information content (by definition), I'd prefer to go in the opposite direction - you should have to remove them from Unicode escapes.
And I see this as different to numbers; with integer or floating point literals, you can insert _ separators usefully to group digits in a programmer-friendly fashion. Thus, you might write a 132 bit hex constant as 0x0_0000_0000_0000_0000_0000_0000_0000_0001_u32 to make it clear that your origin number is 132 bit, even though it fits in a u32 (since you've got a lot of leading zeroes). With Unicode escapes, those _ separators are problematic, because they're not standardized, and thus software you look up character codes in doesn't include them (or parse them - Unicode Utilities: Character Properties fails to handle the separator, but is fine without it).
So, for this specific case, where there's an external standard we're following (Unicode), I want us to use the representations the external standard uses. That means that we should be using 4 hex digits for the position in a plane, plus a plane number prefix for characters outside the BMP (like U+19F80,
). I also want no leading zeroes, or a way to insert separators into big numbers.
These wants conflict - Unicode wants me to write 0041 for a BMP codepoint, not 41 - so I have to compromise to some extent. And I think that saying "you can use 6 hex digits - so you can write 000041, even though that's not what Unicode wants you to do" is a better compromise overall than "you can use _ separators, but when going back to Unicode, you have to remember to remove them". But that's a matter of taste - Unicode's tooling is happy for me to write 0000000000000041 instead, and copes with the leading zeroes, I just think that that's tasteless.