Se non ricordo male, non esiste il concetto di classe private: la classe può essere internal, cioè accessibile solo dalle classi che appartengono al medesimo "assembly", oppure public, quindi accessibili anche all'esterno.

La visibilità dei membri interni della classe stessa è un discorso a parte.

In riferimento alla domanda "quando è conveniente dichiarare una classe private?", mi verrebbe da dire "mai", perché non è tecnicamente possibile.

Ciao!