For example, you can post the same remarks criticizing functional programming in a post about C# or Java and get upvotes, while the same post in a Haskell discussion will be downvoted. You can try the experiment yourself to verify it.
This applies to companies as well - you will be upvoted for pro-Microsoft or anti-Google posts in a news topic about Microsoft, and the reverse in a news topic about Google. This is because people who use Microsoft products will be very interested in Microsoft news, but not interested enough in Google news to go and downvote opinions they disagree with there.
It's simply unreasonsble to think that the value of a comment is independent of its context.
Just the same as Reddit. It's a deeper issue than just being 'reddit', and it's more about online discussion in general.
Then people could turn on or off some way to see which posts are heavily agreed or disagreed with without downvoting interesting posts just because you disagree. You could even have a system where you mark people you respect and then only see which posts they agreed with to get a more personal feel? Might be an interesting discussion board idea to pursue.
There are several factors that ensure better Signal to Noise ratios in communities.
Protective Moats, specific technical subject matter, for example.
Essentially it boils down to difficulty to engage, or non trivial effort required to engage.
The factors you mentioned have little impact on the behavior of the sub, which is mostly influenced by the people and norms of behavior, over the UI.
Upvote/downvotes are de-facto agree/disagree buttons on reddit. As a forum it's completely useless to discuss anything beyond cat pictures and funny gifs.