I see. You can't set only the hash with selenium webdriver. You need to specify the entire url. Usually with single page apps the url remains fixed and you only need to change the hash so that's why the urlHash behaves this way.
So in your case you would need to do a call to url with passing just the callback to get the current url and build a custom command that will reuse this value.
var baseURL = '';
client.url(function(result) {
baseURL = result.value;
});
client.< customHashChangeCommand >(function() {
return baseURL;
}, '#home');
And your custom command will look something like this:
exports.command = function(baseUrlResolver, hash, optionalCallback) {
var baseUrl = baseUrlResolver();
return this.url(baseUrl + hash, optionalCallback);