Q: Why does the ANSI Standard place limits on the length and case-significance of external identifiers?
A: The problem is linkers which are under control of neither the ANSI/ISO Standard nor the C compiler developers on the systems which have them. The limitation is only that identifiers be significant in some initial sequence of characters, not that they be restricted to that many characters in total length. (The limitation was to six characters in the original ANSI Standard, but has been relaxed to 31 in C99.)
References:
ISO Sec. 6.1.2, Sec. 6.9.1
Rationale Sec. 3.1.2
C9X Sec. 6.1.2
H&S Sec. 2.5 pp. 22-3