Bueno, en pocas palabras: las clases anidadas no violan la encapsulación y, en general, las características del lenguaje no violan los principios de programación. Los programadores violan los principios de programación.
Curiosamente, se afirma que las clases anidadas aumentan la encapsulación :
Aumento de la encapsulación: considere dos clases de nivel superior, A y B, donde B necesita acceso a los miembros de A que de otro modo se declararían privados. Al ocultar la clase B dentro de la clase A, los miembros de A pueden declararse privados y B puede acceder a ellos. Además, B puede ocultarse del mundo exterior.
Hay algo de verdad en eso.
Por lo general, B es el resultado de aplicar SRP a A. B sin embargo, potencialmente viola muchos principios, especialmente si todo lo que hace es jugar con los miembros privados de A: D
Creo que las clases ocultas pueden ser útiles. Pero hay mucho potencial para el mal uso.