Index: wp-admin/edit-comments.php
===================================================================
--- wp-admin/edit-comments.php	(revision 20411)
+++ wp-admin/edit-comments.php	(working copy)
@@ -8,7 +8,7 @@
 
 /** WordPress Administration Bootstrap */
 require_once('./admin.php');
-if ( !current_user_can('edit_posts') )
+if ( ! current_user_can( 'edit_posts' ) && ! current_user_can( 'moderate_comments' ) )
 	wp_die(__('Cheatin&#8217; uh?'));
 
 $wp_list_table = _get_list_table('WP_Comments_List_Table');
Index: wp-admin/menu.php
===================================================================
--- wp-admin/menu.php	(revision 20411)
+++ wp-admin/menu.php	(working copy)
@@ -80,8 +80,9 @@
 
 $awaiting_mod = wp_count_comments();
 $awaiting_mod = $awaiting_mod->moderated;
-$menu[25] = array( sprintf( __('Comments %s'), "<span class='awaiting-mod count-$awaiting_mod'><span class='pending-count'>" . number_format_i18n($awaiting_mod) . "</span></span>" ), 'edit_posts', 'edit-comments.php', '', 'menu-top menu-icon-comments', 'menu-comments', 'div' );
-unset($awaiting_mod);
+$cap = current_user_can( 'moderate_comments' ) ? 'moderate_comments' : 'edit_posts';
+$menu[25] = array( sprintf( __('Comments %s'), "<span class='awaiting-mod count-$awaiting_mod'><span class='pending-count'>" . number_format_i18n($awaiting_mod) . "</span></span>" ), $cap, 'edit-comments.php', '', 'menu-top menu-icon-comments', 'menu-comments', 'div' );
+unset($awaiting_mod, $cap);
 
 $submenu[ 'edit-comments.php' ][0] = array( __('All Comments'), 'edit_posts', 'edit-comments.php' );
 
