Para expandir o que dfa disse, o motivo é porque o arquivo jar é configurado como um arquivo zip. Se quiser modificar o arquivo, você deve ler todas as entradas, modificar aquela que deseja alterar e, em seguida, gravar as entradas de volta no arquivo jar. Já tive que fazer isso antes, e essa foi a única maneira que encontrei para fazer isso.
EDITAR
Observe que isso está usando os editores de arquivo jar interno para Java, que são fluxos de arquivo. Tenho certeza de que há uma maneira de fazer isso, você pode ler o jar inteiro na memória, modificar tudo e, em seguida, escrever de volta em um fluxo de arquivo. Isso é o que acredito que utilitários como o 7-Zip e outros estão fazendo, pois acredito que o ToC de um cabeçalho zip deve ser definido no momento da gravação. No entanto, posso estar errado.