No Windows, você precisa reinicializar porque um arquivo DLL (ou EXE) não pode ser substituído enquanto estiver em uso. Alguns drivers e serviços não suportam "descarregamento" e então você deve reinicializar se quiser substituir arquivos DLL ou EXE que são usados por eles. No entanto, a maioria dos drivers e serviços podem ser reiniciados independentemente do resto do computador, portanto, você pode tecnicamente interromper todos os processos usando o arquivo, substituir o arquivo e reiniciá-los novamente. Mas na maioria dos casos, quando essa lista de processos é grande, é mais fácil simplesmente pedir ao usuário para reiniciar.
No Linux, você pode substituir arquivos enquanto eles são usados pelos processos em execução. Isso tem a desvantagem de que qualquer processo existente continuará usando a versão antiga do objeto (até que seja reiniciado), mas qualquer processo novo iniciado após a atualização usará a nova versão. Se houver estruturas de dados compartilhadas ou algo do tipo, as versões em execução simultânea poderão causar instabilidade no sistema. É por isso que no Linux você normalmente ainda reinicia os processos individuais que dependem de um arquivo de objeto quando você o atualiza (também não há muito sentido em continuar executando a versão antiga se você acabou de fazer uma atualização - especialmente se for uma atualização de segurança ).