Если внутренний класс является неотъемлемой частью его родительского внешнего класса, то это вполне нормально. Я вижу внутренний класс точно так же, как любой другой член внешнего класса, за исключением того, что он имеет свой собственный набор методов и свойств.
Например, двигатель является неотъемлемой частью автомобиля. Он не может функционировать вне его (следовательно, бессмысленно), поэтому, другими словами, значимость его существования зависит исключительно от автомобиля. Я, конечно, здесь предполагаю, что двигатель не может существовать ни в чем другом, кроме как в автомобиле (не могу придумать лучшего примера, извините).
в C # вы, конечно, также можете реализовать двигатель как отдельный класс и ссылаться на него из класса транспортных средств. Это действительно выбор с вашей стороны.