If we're talking human usability a dash(-) is a single keystroke while an underscore (_) is a shifted keystroke. I find the former faster to type when actually entering URLs in the address bar.
Indeed, but I can't remember any occasion I've ever manually typed the whole URL like "stackoverflow.com/questions/1234567/test-here-is-the-title".
One can't be both descriptive and typing-friendly at the same time, so there's always room for URL shorteners and shortcuts ("/questions/1234567", but something like "/~1234567" is better).
I believe the story goes something like this: in the google beginnings, a lot of search were in programming domain, and a lot of languages used underscores in functions names, variables and such. Therefore, it was decided that it wouldn't be used as word delimiter, the alternative was to use dash.
I'm not sure if the same applies today, but historical reasons are powerful enough that most people use dashes.
I'be heard this from a few sources, including Matt Cutts' optimization sessions at Google I/O. If anything, dashes are more average-human-appropriate than underscores and you should always be designing for humans.
I just wonder, why? Underscores, being located at baseline, make less distraction, so they should be more readable.