With close voting (except for migration), the main close reason is simply majority rules.
If 3 users vote to close a "primarily opinion based" and 2 users vote to close as "Too Broad", it will be closed and marked as "Primarily Opinion Based", and attributing that reason to all 5 voters.
When you have 3 or more reasons and you no longer have a simple majority is when things get confusing. At that point, it depends on which majority vote was earliest:
- 2 users vote for Primarily Opinion Based
- 2 users vote for Off-Topic
- 1 user votes for Duplicate
In order to break the tie between primarily opinion based and Off-Topic, the system will choose the close reason of the earliest close vote.
This has been how the system works for as long as I can remember, but the recent Close changes (in June) did take it a step further with the off-topic close reason.
Since "Off-Topic" has multiple sub reasons, when "Off-Topic" is the selected close reason, it will attribute the users who selected each of the sub-reasons separately.
With migration, I believe you need 4 votes to migrate to the same site, so it isn't majority rules anymore but migration is a special case. If you don't get enough migration votes, it just goes in as Off-Topic.
Given all of this I haven;t really seen a justification of why it is the way it is and if it would be difficult too change. Personally, I think it should show all of the close reasons, less so for attribution purposes and moreso to convey to the original poster all of the issues with the post.