La respuesta simple a la pregunta es que las cadenas de caracteres disponibles varían de una plataforma a otra.
Sin embargo, hay seis que deben estar presentes, por lo que se podrían haber hecho constantes para aquellos hace mucho tiempo. No sé por qué no lo fueron.
JDK 1.4 hizo una gran cosa al introducir el tipo Charset. En este punto, ya no habrían querido proporcionar constantes de cadena, ya que el objetivo es hacer que todos usen instancias de Charset. Entonces, ¿por qué no proporcionar las seis constantes Charset estándar? Le pregunté a Martin Buchholz porque estaba sentado a mi lado, y dijo que no había una razón realmente especial, excepto que en ese momento, las cosas todavía estaban a medias: muy pocas API JDK habían sido adaptadas para aceptar Charset, y de los que eran, las sobrecargas de Charset generalmente tuvieron un rendimiento ligeramente peor.
Es triste que solo sea en JDK 1.6 que finalmente terminaron de equipar todo con sobrecargas de Charset. Y que esta situación de rendimiento hacia atrás todavía existe (la razón por la cual es increíblemente extraña y no puedo explicarlo, ¡pero está relacionada con la seguridad!).
Larga historia corta: solo defina sus propias constantes o use la clase Charsets de Guava a la que Tony the Pony se vinculó (aunque esa biblioteca aún no se ha lanzado realmente).
Actualización: una StandardCharsets
clase está en JDK 7.
MessageDigest#getInstance()
por cierto.