Я думаю, что вы должны, как правило, предоставлять членам такую же видимость, как если бы тип был сам по себе публичным.
То есть члены, являющиеся частью общедоступного API, должны быть общедоступными, а члены, являющиеся помощниками специального назначения, которые должны быть видимы только для "друзей" классов, должны быть внутренними.
Это означает, что не будет никаких изменений в видимости члена, если вы когда-нибудь решите сделать Тип общедоступным.
Что более важно, он также документирует ваше намерение - любой, кто читает ваш код, сможет определить, какие (если таковые имеются) участники предназначены для внутреннего использования.