Sim, o monkeypatching é muito útil!
De alguma forma, os nomes parecem ser altamente influentes na percepção das pessoas. Chame de "monkeypatch" e soa mal, chame de "hot fix" ou "on-the-fly fix" e soa bem.
Independentemente disso, acho que a capacidade de alterar métodos / atributos / funções em tempo de execução é uma coisa muito útil. Até as pessoas que usam javascript usam o dia todo, talvez sem saber.
Por exemplo:
button.onclick = function(e) { ...}
Esta linha simples ilustra o fato de que você altera o comportamento do botão. Foi projetado dessa maneira. Da mesma forma, você pode alterar todas as outras funções, mas seria tolo fazê-lo.
Agora, para a questão de entregar patches dessa maneira ... bem ... por que não. Você só precisa baixar um pequeno patch em vez de um grande lançamento. Caramba, você pode até corrigir um servidor sem parar, ótimo! E então, um dia, você também pode buscar a versão mais recente para obter uma atualização maior. Justo. Então, sim, voto por "patches de tempo de execução" como uma coisa boa.
Curiosamente, algumas línguas como Erlang foram construídas em torno desse conceito. A capacidade de atualizar um servidor em tempo real.
É claro que, no final, e como em todo o resto, é uma questão de como você o usa. Você pode fazer coisas maravilhosas de OO e uma merda, é tudo a mesma coisa.
EDITAR:
Deixe-me adicionar uma distinção entre maiúsculas e minúsculas, se você está corrigindo sua própria biblioteca ou uma biblioteca de terceiros .
... basicamente, o que você faz com esse patch é consertar um bug próprio ou de uma biblioteca de terceiros . Em ambos os casos, é útil. Para você, ele permite que você forneça uma correção em tempo real. Para um terceiro, você espera (vários meses?) Até que eles o consertem por conta própria ou você o faça agora por conta própria. (você ainda pode enviar o patch para eles, para que o consertem). Quando eles liberam sua próxima versão lib com o problema corrigido, você ainda pode, se você quiser atualizar a biblioteca e remover o patch do seu lado.
Agora, é claro, se você usa um patch para alterar o comportamento de uma lib e alienar seu propósito / maneira de trabalhar, então obviamente isso é uma receita para o desastre. Até um macaco veria isso ... bem, espero. ;)