¿Por qué han creado diversos significados al mismo modificador en Java y C# ?
Había que elegir entre la simplicidad y la capacidad de especificar con precisión los diferentes derechos de acceso. Los creadores de Java y (más tarde) los creadores de C# hicieron diferentes elecciones.
¿Cómo puedo proteger C# (El acceso está limitado a la clase que contiene o los tipos derivados de la clase contenedora) en Java?
No puede. Java es más limitado en este punto.
Pero probablemente debería limitar el uso de la palabra clave protected
ya que en ambos casos significa una ruptura del principio de encapsulación general. Este uso a veces es útil, ya que un lenguaje demasiado estricto puede significar un código demasiado inútil, pero tenga cuidado de no hacer algo demasiado complicado y difícil de cambiar y mantener. Dar acceso a campos internos o métodos para reemplazar clases a menudo significa que tiene una jerarquía pesada con demasiado acoplamiento de implementación (prefiera la composición sobre la jerarquía para la mantenibilidad).
Tenga en cuenta que una variable o método declarado sin ningún modificador de control de acceso está disponible para cualquier otra clase en el mismo paquete. En mi opinión, eso es mejor que permitir el acceso por subclases de cualquier paquete.
Here's the complete grid:

"tenga cuidado de no hacer algo demasiado atado y difícil de cambiar y mantener". No entendí ¿Cómo juega el modificador un papel en eso? – Shashwat
Cuando tiene subclases que acceden a un campo interno, tiene un acoplamiento fuerte que le prohibe cambiar la implementación de la superclase. Ese es uno de los problemas que la encapsulación ayuda a evitar. –
Entendido. Gracias :) – Shashwat