Right now, comment_links() figures the only people who will ever use comment links are those who are going to post comments. This is a bad assumption -- much of the functionality from this feature comes from administrators being able to use it to delete old comments.
Example case: I built a new D7 website for my alma mater student paper that migrated a metric boatload of badly structured, semi-sanitized content ("...And I'm not just talking about the articles..." *boom-tish*). This included all of the site's unpublished comments -- most of which are spam, some of which contain useful data. The site is now using Disqus for all of its comments, however, given that module won't import existing comments into Disqus, we have left comment.module enabled so that older comments are still visible. To prevent the old "add comment" form from also being displayed (not to mention accessible by spambots), none of the site's roles have comment.module's "post comments" permission, but some have "administer comments".
Occasionally we run into an old story that's gotten hit really hard by comment spam not caught by the previous system's Rube Goldberg-esque filtering system. The current "Comments" tab in /admin/content is useless for getting rid of these -- even with Admin Views enabled (Without Admin Views -- forget about it.). However, since comment_links() requires the "post comments" role for it to return links to the template, this is not possible.
I've written a patch that changes the if ... elseif to two separate if statements. Please see attached.