It seems to be simple economics and negotiation tactics to me. Backed up by the fact that it's such a taboo subject among coworkers, almost always for reasons of 'don't want to rock the boat' and 'don't want to get fired'.
From a negotiation standpoint, the employer (generally) wants to hire, or give raises to, the employee at the lowest possible total cost. Whereas the employee (generally) want to be hired, or get a raise, at the highest possible total cost. Where the cost analysis may not be the same for each side.
Now assume that that all other things being equal, and no information about salary rates are known, the employer's range for salary is $80-$100k, and the employee's range for salary is $70k-$90k. In this situation, the employer would love to hire at $70k, which they may be able to do if the employee doesn't know any better. Now, imagine that the employee had information about the employer's salary range, then the employee would smartly shift their salary range knowing that the employee was 'low'.
The same applies to raises. If an employee has no information about other coworker's salaries, then the 'standard' raise of 3-4% might be acceptable. However, if another coworker has a significantly higher salary, with similar responsibilities, then the employee may ask for a higher raise. They may or may not get that raise, but it's at least a possibility. One which the employer is likely to not want to have the employee know about.
The worst case scenario for the employee is to find out they are making significantly more money than their coworkers, in which case they have no further bargaining power.
So really, the question of whether or not it's a good idea to share salary information to other current or future coworkers comes down to whether or not you're on the 'employer' side (where additional salary information can only move your costs upwards), or on the 'employee' side where having no transparency about salary can prevent you from getting the best salary possible.
Since the difference between having salary transparency or not is so high, it behooves most employers to subtly discourage salary talks. So you end in a place where it is a possibly a violation of federal law (for the federal government), or possibly state law[0], to prevent people from talking about salaries, but at the same time people will almost always only post their salary information anonymously.
People value transparency, and it might be that they would prefer a lower salary at a more transparent workplace. In addition, providing wage transparency allows for further transparency in other business areas, such as gross margins, R&D costs, etc. which may be valuable in allowing employees to understand the business better and contribute in more meaningful ways.
You are also only addressing the workers with below-average wages (who may be qualified for higher pay) when you say that secrecy helps employers. Half of all employees have above-median wages, so I would assume that transparency could be used to bargain them down, as the below-median workers were helped in bargaining-up; I am not sure what the net effect would be, and don't know why we should assume it goes one way or the other.
I am not an advocate for wage transparency or opaqueness, because I don't know which way the effects go for anyone. I am also an advocate of deregulation, and abolition of most laws, simply because there are so many that nobody knows what is illegal; this seems to be yet another case of governmental over-reach.
If we focus on Amazon, lack of information is going to be asymmetric, with Amazon as a large employer holding the informational advantage. Amazon can see what the salaries are, what people accept, and what people were making when they left. If people want to try bargaining up because they think they deserve more, Amazon knows better if it can ignore the request and find the same talent for less.
And I don't see how it's relevant to mention how workers have "above median wages" compared to national figures. If anything, wouldn't that imply that Amazon is blindly giving out too much money and ignoring this very public information? That's implying an unlikely level of incompetence, when it's really about variation within the labor market.
You assume that more information asymmetry always helps the employer; it is also possible that a lack of information makes the employee think they're getting a 'bad deal', because they overestimate how much their coworkers make (possibly due to something akin to impostor syndrome). If Amazon thinks they can find someone of equal skill for less money, they should make the change, and if the employee thinks they are worth more than they can get with Amazon, then they should leave; I really don't understand your (second?) point.
I never said the above-median wages had anything to do with national figures; I meant that depending on what the employee and employer were bargaining around (more likely to be company median wages than national), the comparison would help the employees bargain up half the time, and the employers bargain down half the time.
People value transparency, and it might be that they would prefer a lower salary at a more transparent workplace.
I specifically said above, "Where the cost analysis may not be the same for each side.". This obviously includes non-salary benefits (stock, vacation, flex time, home life balance, etc).
You are also only addressing the workers with below-average wages (who may be qualified for higher pay) when you say that secrecy helps employers.
I specifically said above, "The worst case scenario for the employee is to find out they are making significantly more money than their coworkers, in which case they have no further bargaining power.". As an employee, your bargaining power is not reduced if you have knowledge of that you are paid above the median. In other words, from the employees perspective, there is no situation where you are in a worse negotiating position due to having more salary information.
so I would assume that transparency could be used to bargain them down, as the below-median workers were helped in bargaining-up;
Note that when negotiating, the only party that is going to negotiate for lower wage is the employer (since it is generally unlikely that an existing employee is going to ask for a lower wage voluntarily). And from that position, the employer already knows all current salaries. If you are making substantially more than the other people, then the employer can (and likely would) reveal that information in order to help secure a lower raise (or also likely, no raise, and unlikely, a lower wage). That's the power of information asymmetry. The employer can use the information when it benefits them (reducing the size of a raise for an already high compensated employee), but withhold that information when it does not benefit them (when a low compensated employee is up for a raise).
don't know why we should assume it goes one way or the other.
We don't have to assume anything. This is basic economic and negotiating tactics.
I am not an advocate for wage transparency or opaqueness, because I don't know which way the effects go for anyone.
It's perfectly reasonable to have an opinion on wage transparency, but it seems a little odd to say "I don't know which way the effect go for anyone". We have negotiating models and frameworks specifically for this type of activity. And the general rule is, "The more information asymmetry that you have in your favor, the better your bargaining position". Specifically because it allows the party with the additional information to use that information when it benefits them, and withhold that information when it does not benefit them.
From a negotiation standpoint, the employer (generally) wants to hire, or give raises to, the employee at the lowest possible total cost. Whereas the employee (generally) want to be hired, or get a raise, at the highest possible total cost. Where the cost analysis may not be the same for each side.
Now assume that that all other things being equal, and no information about salary rates are known, the employer's range for salary is $80-$100k, and the employee's range for salary is $70k-$90k. In this situation, the employer would love to hire at $70k, which they may be able to do if the employee doesn't know any better. Now, imagine that the employee had information about the employer's salary range, then the employee would smartly shift their salary range knowing that the employee was 'low'.
The same applies to raises. If an employee has no information about other coworker's salaries, then the 'standard' raise of 3-4% might be acceptable. However, if another coworker has a significantly higher salary, with similar responsibilities, then the employee may ask for a higher raise. They may or may not get that raise, but it's at least a possibility. One which the employer is likely to not want to have the employee know about.
The worst case scenario for the employee is to find out they are making significantly more money than their coworkers, in which case they have no further bargaining power.
So really, the question of whether or not it's a good idea to share salary information to other current or future coworkers comes down to whether or not you're on the 'employer' side (where additional salary information can only move your costs upwards), or on the 'employee' side where having no transparency about salary can prevent you from getting the best salary possible.
Since the difference between having salary transparency or not is so high, it behooves most employers to subtly discourage salary talks. So you end in a place where it is a possibly a violation of federal law (for the federal government), or possibly state law[0], to prevent people from talking about salaries, but at the same time people will almost always only post their salary information anonymously.
[0] - http://www.dol.gov/wb/media/pay_secrecy.pdf