дак никто не мешает их обнулять после использования
Так то да, но в сях, например, используют всякие фишечки, тот же volatile, позволяющие гарантированно, даже при оптимизации очистить память, в том же openssl написаном на сях своя функция очистки, а как мы будем гарантировать, что при оптимизации JVM не выбросит wipe ключа?плюс при исключениях начинаются прыгания по стеку, и там могут ключики валяться