Простая причина этого заключается в том, что она позволяет реализации меняться со временем, даже если на самом деле она может меняться не часто (если вообще когда-либо).Если у вас есть класс, и вы изменяете его переменные экземпляра, теперь вы зависите от тех переменных экземпляра, которые существуют, вместо того, чтобы иметь открытый интерфейс, который мог бы остаться прежним без изменений (несмотря на изменение реализации, например, с зависимым от платформы кодом).
Ответ Фемарефа также верен - методы могут допускать появление определенной логики, которая может потребоваться.Без этого вы можете не получить правильные данные от объекта.