On a sidenote, I actually used URL() to do the following to retrieve more geocoding information:
google_geo_url = URL(scheme='http', host='maps.googleapis.com', a='maps', c='api', f='geocode', args=['json'], vars={'sensor':'false', 'address':addr})
Which, I find, is a very elegant way to make a call to an external API.
As Massimo mentioned : this only works if a/c/f are ALL defined, which can be confusing. But then again : URL wasn't designed for external urls.
I think Jonathan's idea to make a XURL() helper would be a nice improvement : it is equivalent to using encodeURL but definitely more web2py-esque.
URL(..., external=True) could also do the trick.
Like villas, I believed that specifying an explicit scheme and host would necessarily make it an external URL...