I think this policy is the sheer discrimination against the very basic concept of equality. I don't know where this system started. And I still don't know - are there any companies in India where salaries are not secret?
Let me tell you how this helps in discrimination.
There is boot licker in group, so boss impressed with him gives a good raise. So people get to know that boot lickers are getting raises. The good thing is nobody can say to manager that he got the raise that much. Is he really eligible for this? The very these words are against this secrecy clause. The after effect is- it increases suspicion and politics starts. Because people who are getting monetary appreciation are not going to tell the people, if they are not worthy of it. So some more start licking the boots. This helps in making the manager his clout among his juniors. This funda will most likely will be applied in the cases when manager is inefficient.
There is another case where it can be used. If there is one employee who is good at work and not very happy with the management. He often confronts manager in the meetings with his arguments. Many times his arguments are very apt. Management has no answers. Arguments are signs of healthy discussion. But ugly truth is that most managers don't like when a junior argues with them. Some managers make it the point he is not given a good raise and he leaves in frustration. Other in the group watch it out and no body speaks next time even if something is not in the rulebook. The scary thing is that this helps manager to manipulate the rules.
One more thing, there is one common phenomenon in IT field. The guy who is working from last three years in the same company will always be paid less than the guy who just joins. Let me tell you one tale - there were two guys in the same company. They worked two years together. Then one guy switched to another company. After working there for one year, he came back to this company again. Now this second guy is earning nearly 3/4th more than the earlier one. While both are working more or likely same, but doesn't it demoralize the earlier guy? Is working in good spirit really bad? Or hopping the companies is the good idea?
Second one seems to be a better option. At one end companies say attrition is bad, but aren't they encouraging here.
I think salaries should be open. They will bring fairness to the workplace. People will really get to know who is getting what. If there are secret clauses for the things, hardly backed by the reasons, most likely they are there to help authorities when they can't play fair.