O motivo é que o Unix não bloqueia um arquivo executável enquanto ele é executado, ou mesmo se ele for como o Linux, esse bloqueio se aplica ao inode, não ao nome do arquivo. Isso significa que um processo que o mantém aberto está acessando os mesmos dados (antigos) mesmo após o arquivo ter sido excluído (desvinculado, na verdade) e substituído por um novo com o mesmo nome, que é essencialmente o que uma atualização de pacote faz.
Essa é uma das principais diferenças entre o Unix e o Windows. O último não pode atualizar um arquivo que está sendo bloqueado, pois está faltando uma camada entre nomes de arquivos e inodes, o que torna um grande problema atualizar ou mesmo instalar alguns pacotes, já que isso geralmente requer uma reinicialização completa.