If Node automatically performed a URL decode on the pathname, you lose data — e.g., if your application depended on knowing whether someone encoded a space as a "+" or %20 (it seems silly, but let's say you can contrive an example where that matters), you'd have no way to tell from that information. URL parsing and decoding are conceptually separate steps, and the implementation in Node reflects that.
You should be able to get a correctly-decoded URL using something like:
Just make sure you always resolve the +'s first, because if someone percent-encodes a literal + sign, that would then be translated into a space if done in the wrong order.
Hope that helps!
-Matt