Например, потому что могут быть методы, которые вызываются только внутри этого класса. И очень полезно, чтобы снаружи они были недоступны.
Если создаешь Public методы - это означает что кто-то может его использовать. И в случае крупного продукта - это может быть другой программист, а может даже другая программа. И если в будущем захочешь модернизировать, то со всеми public методами нужно думать про версионирование и legacy саппорт.