I shall put some serious effort into looking at the moment node (maybe later today) and see if I can work out a trick to get around the timezone problem.
The problem is that an elapsed time is not the same thing as a time.
What would you expect moment to output if the elapsed time was 25 hours?
If you have an elapsed time of 5000 millseconds, moment will presumably interpret that as very early on 1st January 1970.
Change the output format to dddd, MMMM Do YYYY, hh:mm:ss and test it.
It doesn't "suddenly" apply the timezone correction when you add hh, it was always there but the difference is (usually) a round number of hours so it doesn't show up.
Sorry, I had missed the fact that you are trying to show a time difference.
If you set the input and output timezones to UTC and the format to HH:mm:ss then it works correctly for me. So with an input of 3600000 (1 hour in milliseconds) then it shows "01:00:00".
That should work whatever timezone you are in, up to a time difference of 23:59:59. It obviously won't work above that.