Why may :: appear only once in an IPv6 address?
Answer
Because two occurrences would make it impossible to work out how many zero hextets belong to each run
The compression works by subtraction — the reader counts the hextets that are written and infers that the rest are zero. With two gaps there is no way to divide the missing hextets between them, so the address becomes ambiguous. Length is not the issue; a compressed address is shorter, not longer. Compression is not restricted to a leading run — it can shorten a run anywhere, and the convention is to shorten the longest one. And nothing in the notation marks the network/interface boundary; that is what the prefix length is for.