Why does craft.request.getQueryStringWithoutPath return an empty string?
Turns out this was a bug that only occurred if the existing URL didn't have an URI associated with it.  i.e. http://craft.dev?foo=bar.

It's been fixed and will be included in the next 2.5 beta release (or the first 2.5 public release if you don't want to swap to the beta track).