Would redirecting users in hook_menu's access callback have any undesirable effects?
I think you could do this by altering the delivery callback function. If the access callback returns FALSE that's what's passed to the delivery callback. If you wanted this redirect behaviour just on specific pages you could modify the delivery callback just for those pages via hook_menu() or hook_menu_alter(). If you want the behaviour to be global, you can use a hook_page_delivery_callback_alter() to change it.

Here's an example delivery callback.

function custom_deliver_html_page($page_callback_result) {
  if ($page_callback_result === MENU_ACCESS_DENIED) {
    drupal_goto('&lt;front&gt;');
  }
  drupal_deliver_html_page($page_callback_result);
 }


Btw this is untested, and I've never actually altered the delivery callback myself previously.