A parte dessas exceções que mais me incomoda é que isso prejudica minha cobertura de código.
Quando estou ficando compulsivo com a cobertura, vou fazer uma tentativa / captura que "nunca pode acontecer" (... ou apenas se estiver usando uma JVM mutante que de alguma forma se esqueceu de incluir "US-ASCII") em uma classe e método que encapsula essa tentativa / captura e substitua a exceção verificada de uma das maneiras mencionadas aqui (geralmente lançando uma exceção não verificada com uma mensagem maliciosa).
Em seguida, minha cobertura de código é atingida na classe de utilitário, mas não em todas as referências a essa operação espalhadas pelo meu código.
Às vezes, aproveito o tempo para rolar como operações em uma classe que realmente possui semântica coerente. Mas como é óbvio para os meus colegas de equipe o que está acontecendo, eu geralmente mantenho o mais simples possível e não me preocupo muito com o melhor design possível.
No entanto, como um comentário mencionado, o Goiaba e outras bibliotecas têm maneiras de mitigar essa dor - mas essa é basicamente a mesma estratégia. Mova o aborrecimento para fora do palco para que seu código principal não seja afetado pela cobertura.