Então, reduzi os arquivos de 22k para um em particular, que despeja pilha.
Eu provavelmente poderia ter encontrado isso mais cedo, exceto que eu não percebi até que eu só tinha um arquivo singleton - createrepo não produzia nenhuma informação de processamento até depois de completar as informações de verificação do cabeçalho. Desde que falhou, o arquivo rpm listado acima o erro não foi o arquivo que falhou, mas o arquivo antes, o nome do arquivo com falha nunca foi saída. Eu só notei isso até que eu tinha (tediosamente) reduzido a um único arquivo, e depois não vi nenhuma saída de informação de arquivo precedendo o rastreamento de pilha. Vou marcar isso como um bug! bem como o tratamento de erros na minha pergunta.
Então, o arquivo com problema acabou sendo o libmicrohttp-doc-0.4.6-1.el5.x86_64.rpm.
Eu não tenho certeza de qual espelho veio - é antigo, alguém estava comprando o repo então; no entanto, a versão que falha em comparação com uma versão baixada do Fedora tem valores MD5 diferentes ... então algo Parece errado com a versão que tenho. Estou marcando o resultado respondido porque sem consertar o Python não há mais nada que eu possa aprender.
Obrigado a @Bratchley (por meu comentário eu tentarei obter o rastreamento da pilha).