As to the legal aspect: a bonus is, by definition, an undefined extra your get on an arbitrary basis. To that end, you can't really strong-arm the company into giving you the bonus you were expected to.
Even if the bonus does not match what their initial estimates indicated, unless the context of their statement was legally binding (e.g. as part of a contract renewal), then it's not set in stone.
But there is also a moral argument. You're dealing with a company whose top level management has decided to not give out bonuses based on performance. Regardless of whether your department outperforms itself or not, the total bonus amount is fixed. This means that the department employees are left to outperform their colleagues because they are in direct competition with each other over the share they get from the predetermined bonus pool.
While this may yield results, I find it incredibly manipulative. This is effectively pitting team members against each other, which can be massively detrimental to morale and likely to lessen any potential team spirit that was there.
Take a step back, and think about how lucky you are to have a job.
This actually shows the same "pitting you against the others" mentality. Rather than focusing on your employment (and subsequent wage/bonus), the manager has opted to focus on you versus the unemployed, thus shifting your focus towards non-employees as opposed to the company who did not give you the bonus you were told you were going to receive.
However, there is too many good people on the team, and I did not want to give too low a score to anyone. I have always done this, it is no surprise to anyone.
He is actually right there. It seems to have been a constant that bonuses are not taken to extremes, in an attempt to not cause rifts between employees.
To me, this suggests that top level management (whop sets the bonus budget and its rules) is less concerned about animosity between competing colleagues than the lower level management (who actually distributes the bonuses).
I can't fault your direct manager here. They've been dealt a shitty hand (a flawed bonus system) by their top level managers, and they are doing their best to not let it affect team morale.
However, this comes with the unfortunate downsides that individual effort is no longer rewarded (because the bonuses are distributed as equally as reasonably possible).
The question that remains it whether you're okay with that or not. If it were me, this would severely impact my spirit towards working for an increasing bonus since you're pretty much guaranteed to have roughly the same bonus anyway.
All the extra effort in the end amounts to and extra 10% (from 95% to 105%) of a month's wage, which is roughly 0.83% of your yearly wage.
Do the math here: is all the extra effort you put into your job worth more than 0.83% of your wage? If you're labeled an over-performer (and that's not just a lie management tells you to keep you motivated), then I would argue that it is not; and the "fair" bonus is being held back because management is trying to please the employees who would otherwise be receiving considerably less than a 95% bonus.
I don 't think your direct management is doing anything inherently wrong. They had two options, and either option was going to disadvantage a subset of their employees. They're trying to avoid colleague animosity as much as they can, which is actually a commendable goal. But they are doing it at the cost of destroying the bonus' financial incentive that is supposed to be award to high performers. By trying to keep the lower half happy by ensuring 95% of a standard bonus, they are taking away the additional 95% reward that the upper half of employees would have earned.
And there's nothing inherently wrong with that (although it should be communicated clearly, which it was not in your case). The company I currently work at hands out bonuses on a fixed %. The company (about 15 employees) is given a goal target (of company revenue). For each tier that is achieved (regardless who achieved it), everyone gets the same % of their wage as a bonus.
I like my company's system, but that's a personal preference. I'm sure that some of our higher performers might not be as happy about it. But it was communicated clearly, and everyone agreed to the system.
Whether you want to work in this atmosphere or not is your decision. If you are someone who is incentivized by trying to maximize their bonus, the current company's approach to bonuses simply does not match with your preference.
I would, however, suggest to discuss with your boss that the division of the bonuses is at their discretion, but that you would at least expect to have a clear expectation, instead of being told one thing and then receiving less than you were expecting.
if it happens once, it's possible that this is an unforeseen, unintentional and/or unavoidable situation. But it shouldn't happen a second time.
As a sidenote:
What the company is doing wrong, in my opinion, is that they've told you that the bonus budget equals the sum of all managers' monthly wages. This creates a metric by which everyone can gauge whether they received a below-average or above-average bonus; which is what's causing the lower half to be unhappy about the bonus they received. No one likes being in the losing half.
What management should have done is obfuscated the math behind the bonus budget, and instead said "look, there is an unspecified amount of bonus money, and we will hand this out to people based on their performance".
This means that e.g. receiving a 75% bonus is not indicative of "losing the bonus game" because you don't know how much of the bonus budget that you've received. For all you know, you could've been awarded the lion's share of the bonus budget. You got some extra money, because you performed well. And that's a positive feeling. What the others received is not your business, and you shouldn't use this to measure the worth of your own bonus anyway.
But by knowing the amount of bonus money there is to award, employees can reverse engineer the calculations to figure out their position on the "bonus award" list, which is always going to end up negatively impacting morale for half of the list's members.
As a basic example:
I upvoted your question. Clearly, it means I value the question you have posted here, right? That's a good thing!
Now suppose I reveal that I give out 100 upvotes on questions every day, and I only read 5 questions per day (for the sake of example, assume I can give multiple upvotes to a question).
Suddenly, the one upvote I gave you has lost all of its meaning, because you can reverse engineer the math, knowing that I must have given the other 99 upvotes to the other 4 questions I read, which is just under 25 upvotes per question. Suddenly, your 1 upvote pales in comparison (it's 4% of what everyone else gets on average), and this will affect whether you think I value you.