Lembre que o DistribuicaoDFe não retorna apenas XML de notas, também retorna os resumos, eventos, resumo de eventos... então cada chave pode ter N documentos retornados ao longo do tempo.
Em vez de condicionar a gravação pela chave (resDFe.chave) use a propriedade schema.
var
I: Integer;
DFe: pcnRetDistDFeInt.TdocZipCollectionItem;
XML: String;
begin
[...]
ACBrNFe1.DistribuicaoDFe(StrToInt(cUFAutor), CNPJ, ultNSU, ANSU);
for I := 0 to ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count - 1 do
begin
DFe := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[I];
case DFe.schema of
schprocNFe: XML := DFe.XML; // nfe completa
schresNFe: ; // resumo da NFe
schresEvento: ; // resumo de evento
schprocEvento: ; // evento