Faz o teste, se comprimir metade do tamanho, que é o caso da Sony, vai ter perda. O zip de pastas tem um algoritmo diferente, pra tirar o espaço vazio, o de arquivos únicos tem perda ou quase nada de ganho de espaço.
Não tem nada haver isso de tirar espaço vazio.
Compressão sem perda é uma coisa muito bem documentada e estudada na Ciência da Computação.
O jeito mais simples de fazer é criar um dicionario e armazenar a posição do itens ao invés de repetir-los ao longo do arquivo.
Inclusive ao zipar arquivos pequenos, eles podem ficar maiores por conta do overhead do dicionario.
No caso das fotos os itens poderiam ser as informações RGB de mesmo valor.