Underscores have been considered highly undesirable for some time now because the underscores are not visible in the address bar of many browsers, being hidden by the bottom line of the address bar.
There is an event 'OnStripAlias' which allows you to process the alias in a plugin; if there is such a plugin then the alias becomes the output of the plugin, otherwise the dash is inserted. Personally, I would simply copy the code for the default behavior, and change the dashes in the regular expressions to underscores.
/**
* Format alias to be URL-safe. Strip invalid characters.
*
* @param string Alias to be formatted
* @return string Safe alias
*/
function stripAlias($alias) {
// let add-ons overwrite the default behavior
$results = $this->invokeEvent('OnStripAlias', array ('alias'=>$alias));
if (!empty($results)) {
// if multiple plugins are registered, only the last one is used
return end($results);
} else {
// default behavior: strip invalid characters and replace spaces with dashes.
$alias = strip_tags($alias); // strip HTML
$alias = preg_replace('/[^\.A-Za-z0-9 _-]/', '', $alias); // strip non-alphanumeric characters
$alias = preg_replace('/\s+/', '-', $alias); // convert white-space to dash
$alias = preg_replace('/-+/', '-', $alias); // convert multiple dashes to one
$alias = trim($alias, '-'); // trim excess
return $alias;
}
}