Getting good Salary is one reason to go abroad also to explore the other technology and getting knowledge to improve more. In india,packages are good,but indian people want to earn more.
Getting good salary is one thing, but wanting to get paid the amount that is directly proportionate to the work in terms of time spent and mental processes involved is the second main reason. In that aspect, Indian companies pay poor salaries.
The main aim of software engineers is to earn more money thats why people prefer it. and in India there no much market for software people who are more capable so they prefer onsite opportunities and goto foreign countries, so in this way they see other countries, earn more money , gain more knowledge and they will have job satisfaction also