یکی از دلایلش برای افزایش خوانایی و سادگی است. به جای اینکه بعد از ساخت یک شی مثلا 6 یا 7 بار setX,setY انجام دهید و... تو یک خط مقادیر اولیه رو تنظیم میکنید. بعدشم ممکنه بخواید مقادیر اولیه رو هر وقت بخواید تغییر بدید، پس به set ها نیاز دارید.
ضمنا برای فیلدهای final نمیتونید در set مقدار دهی کنید ولی در سازنده میشه. چون سازنده یکبار فقط با ایجاد شی اجرا میشه ولی set هر تعدادی ممکنه اجرا بشه برای همین final در سازنده فقط میشه مقدار دهی کرد.