Ah, but if you think about it, the upvote button has the same dysfunction as the downvote button, just at the other extreme. The downvote button punishes controversy; but the upvote button
rewards orthodoxy. So even without a downvote option, orthodox comments rise to the top.
The upvote button also acts a bit like a Rotten Tomatoes score, in that it compresses the full range of "scores" people might give something down into just "did you like it or not." So something that a thousand people can like just enough to vote for, will end up upvoted much more highly than something that 100 people absolutely love. The things you see rising to the top are thus whatever is "blandly agreeable" to the most people, rather than what is "seriously amazing" to a non-negligible subset of people.
---
IMHO a "proper" solution for both of these problems would be entirely different than what we've got now.
• The primary factor for ranking posts/comments would be an "engagement score", coming from how long in aggregate users spend actually looking at/reading the comment or linked page (which is in fact practical to observe if this social-bookmarking service is interacted with primarily through a browser extension / app, as would be the modern trend.)
• Posts (and comment threads) would additionally gain some (diminished) bonuses from the aggregate scores of their child-comment subtrees. So boring posts/root-comments with engaging comments subthreads would still rise to the top, to ensure that those subthreads are surfaced to appreciate. (Probably there'd have to be UX for this case, highlighting the aspect of the post+comments that's so engaging.)
• Something upvote-like would still exist (though it'd be optional for the system's functioning, because of the engagement score); but adding one would require a proof-of-work (e.g. solving a CAPTCHA.) This signal could thus be factored quite strongly when available (presuming the service has sufficient anti-botting measures in place.)
• You can actually upvote things multiple times — but the proof-of-work required would be exponentially-increasing. One CAPTCHA for one point; another two for a second point; another four for a third point. This solves the "Rotten Tomatoes" problem.
• No downvotes; instead, comments can mark themselves as being a "rebuttal" to the post/comment they're responding to. (Maybe entirely-separate "comment" and "rebut" UX flows.) The aggregate engagement+upvote scores of all "rebuttals" to a thing, would then be inherited as a "malus", i.e. a bonus with the sign flipped; high-scoring rebuttals lower the rank of the thing they rebut, which means that that thing then has less of a score to contribute as a bonus to its own ancestors.
• This down-ranking would be applied recursively from the leaf nodes up; the malus of a rebuttal on its ancestors would be "weakened" if the rebuttal was hit with a malus from high-powered rebuttals of its own.