A diferença prática entre esses pacotes é onde as bibliotecas estão localizadas. Com libfoo:i386 , as bibliotecas acabam em caminhos multiarch como /usr/lib/i386-linux-gnu , enquanto que com lib32foo:amd64 bibliotecas acabam nos caminhos "antigos", como /usr/lib32 . Num futuro distante, nos livraríamos de qualquer pacote lib32foo , mas ainda não chegamos lá. Pelo menos lib32stdc++6 é necessário para construir gcc-X.Y no momento, porque ele constrói gcc-X.Y-multilib , que é capaz de suportar comutadores como -m32 para selecionar a arquitetura de destino (isto é, a arquitetura do binário resultante). Sem os pacotes lib32foo , as dependências de compilação de gcc-X.Y cruzariam os limites da arquitetura e isso ainda não é suportado. Existem mais alguns problemas que exigem manter os pacotes lib32foo por um tempo.