What are other purposes of private method/variable other than for protection.
Encapsulation
To hide the internal workings of an object so that it's main purpose and functionality are clearer, and easier to manipulate.
To Force Access through Accessor/Mutator Methods Only
A variable may be declared private, forcing programmers to use the accessor or mutator methods instead. These methods may perform calculations, other checks and balances, you name it. Basically, it prevents any classes from modifying this variable in a stand-alone kind of way without using it's accessor or mutator.
Deny Access In-General
As you suggested, a variable can be made private for protection, to prevent outside classes from tampering with the variable all together.
Encapsulation is the main purpose of member scopes.
You can find a description of the reasons here:
Encapsulation is achieved by specifying which classes may use the members of an object. The result is that each object exposes to any class a certain interface — those members accessible to that class. The reason for encapsulation is to prevent clients of an interface from depending on those parts of the implementation that are likely to change in the future, thereby allowing those changes to be made more easily, that is, without changes to clients.