Palpite: seu script está operando sob set -e (sinônimo: set -o errexit ), o que faz com que o shell saia se algum comando retornar um status diferente de zero (indicando falha convencionalmente). Em caso afirmativo, sairá se diff encontrar alguma diferença, porque diff retornará o status 1 se encontrar diferenças. Se este for o problema, mude essa linha para
diff -r "$originalJarExtracted" "$assembledJarExtracted" >"target/$diffList" ||
[ $? -eq 1 ]
Em seguida, o script só sairá se diff retornar um status diferente de 0 (sem diferença) ou 1 (diferenças), ou seja, somente se houver um erro, como um arquivo ausente.