Parece que o problema é que o arquivo zip usa variações de maiúsculas e minúsculas inconsistentes para nomes de diretório. É exatamente isso que o sistema de arquivos ciopfs serve para: ele fornece uma visão sem distinção entre maiúsculas e minúsculas de uma árvore de diretórios. Existe um pacote do Ubuntu. Crie uma visualização de um diretório existente montando o sistema de arquivos ciopfs em um diretório temporário, descompacte o zip dentro dessa visualização e obterá o arquivo extraído no diretório original.
mkdir ~/case-insensitive
ciopfs ~/temp ~/case-insensitive
cd ~/case-insensitive
unzip -x __MACOSX -x '__MACOSX/*' /path/to/zip
cd ~/temp
fusermount -u ~/case-insensitive
Se isso não funcionar por algum motivo, meu próximo candidato seria a biblioteca Python zipfile
( exemplo ).