session_register('varname') creates a global variable called $varname, that's supposed to contain the sessioned value of that variable.
It's equivalent to $varname = &$_SESSION['varname']. Or at least, that was the idea - it was buggy until 4.3.
If you look through some of the posts on this forums about sessions, you'll find that a lot of them are caused by people giving $varname a value, then using session_register('varname'), and wondering why $varname has lost the value they just gave it.
The extra assignment ($varname = &$_SESSION['varname']) means more work, means that it's harder to see in the code which variables are session variables and which aren't. Basically, it's a matter of treating session variables in some weird abnormal way when they could just as easily be handled the same way as any other variable.
In other words, not using session_register() is faster and simpler.
start a session;
session_start();
Use a session variable
$thing = $_SESSION['varname'];
Set a session variable
$_SESSION['varname'] = $thing;
Clear a session variable
$_SESSION['varname'] = null;
I see also in the manual that it states:
Caution
If you want your script to work regardless of register_globals, you need to use the $SESSION array. All $SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where register_globals is disabled.
Not that I entirely understand this, but then, I always work with register_globals off and $_SESSION[] anyway.
I could turn your question around: what advantages are there to session_register()?