O encapsulamento não se refere somente as variaveis, ele se refere também a isolar as regras de negócio.
No caso dos exemplos dos cursos de C# e Java, eles giram em torno do sistema de criar contas bancárias.
Perceba que nestes exemplos, o programador que for utilizar as classes de conta bancária não precisa saber como funciona a lógica de sacar ou depositar. Ele apenas tem um método onde ele informa o valor. A forma como o processo funciona fica encapsulado na classe, ou seja, ela existe em apenas 1 lugar da aplicação, o que facilita a manutenção.
No caso das variáveis (propriedades), você pode querer deixar as variáveis restritas (seja com private ou protected), mas, você pode querer ter o acesso apenas para consulta, como por exemplo seria o caso da variavel saldo. Você não quer que ela seja alterada sem primeiro passar pelos métodos de saca ou deposita (ou seja, ela não vai ter um setter), mas, você quer poder puxar o valor atual do saldo, neste caso precisaria apenas de um getter.