rfc5952, a seção 4.2.2 "Tratando um campo 0 de 16 bits" diz:
O símbolo "::"Não deveser usado para encurtar apenas um campo 0 de 16 bits. Por exemplo, a representação
2001:db8:0:1:1:1:1:1 está correta, mas
2001:db8::1:1:1:1:1 não está correta.
Okawamura-03o rascunho tem uma dica do porquê:
4.2.2. Um campo 0 de 16 bits
"::" não deve ser usado para encurtar apenas um campo 0 de 16 bits, pois isso tenderia a induzir em erro que há mais de um campo de 16 bits encurtado.
Mas não tenho certeza se sigo o raciocínio aqui. Não seria mais simples entender se :: sempre expandido até a quantidade máxima permitida de zeros?