Not really sure why it's not working as you would expect. I created a fiddle and verified things are not working as expected. Hopefully a Bitovi guru can chime in.
Also discovered something which is very important - the use of can.route.attr('name', 'value') is asynchronous with location.hash. See the fiddle for an example, but the code must wait 10ms before the location.hash property is updated (in Chrome).