ну, человек пришел с вопросом, "как скрыть метод", а не зачем они и как реализованы.
Зачем нужны? Ну, для порядку. Реальной необходимости иметь какие-то СКРЫТЫЕ методы я не вижу ни в одном языке. Но в том же питоне есть просто соглашение о нейминге с нижними подчеркиваниями.
Т.е. код на C# будет работать даже если все методы public, на сколько я понимаю. Но, во-первых, приходит вася и читает твое класс на 100500 методов и не понимает, за что ему дергать, чтобы пользоваться - приходится изучать весь класс, особенно, если нет доки. Если же ты оставил 5 паблик методов, то выбор у васи сильно меньше.
Плюс, ты можешь захотеть защитить какие-то свои методы от перегрузки. Вот есть у тебя какой-то служебный метод, котрый должен только определенным образом вызываться и только внутри экземпляра, а если его вызовет вася, да еще и не в тот момент, то все сломается. Ты его приватишь, чтобы вася не вызвал. А еще хочешь, чтобы этот метод не менялся у наследников - еще и протектишь от перегрузки. Но все еще можно все заменить на паблик и все будет работать, пока ввася не сунет отвертку в розетку.
Это как страховочные колесики на велосипедах.
Ну, это я так понимаю. Может я не прав.