Na verdade, provavelmente é preenchimento. Verifique os tamanhos dos arquivos, é output.iso um pouco maior?
Veja o final de output.iso :
dd if=output.iso bs=1 seek=658562000 count=1071 | hexdump -C
Eu estou supondo zeros?
Você pode tentar executar ls -l input.iso para obter o tamanho exato e, em seguida:
dd if=output.iso bs=1 count=<INPUT.ISO SIZE> | md5sum
Observe que isso será muito lento, já que você está lendo um byte de cada vez. Se o tamanho for divisível por um inteiro, substitua esse inteiro pelo 1 em bs=1 e divida o count por esse número. Até 2 bytes por vez serão muito mais rápidos!
Quanto à sua segunda pergunta, o erro de entrada / saída acontece quando dd atinge o final do dispositivo. Nada para se preocupar.