Reading your case description and reading https://docs.mendix.com/refguide/xpath-hours-from-datetime, it seems wrong indeed. There is no mention of any timezone in any of the documentation nor are there ~UTC-variants of the functions. This function is probably not heavily used and only tested on dates with localized set to Yes, which is the default and the most common occurrence.
A solution would be either add a timezone-parameter or to duplicate the function to ~UTC and ~Local. The ~local variant of course needs to know the timezone, either by determining it or by get told via a parameter.
Btw. This goes for each of the DateTime related Xpath constraints.
I think you can safely file a bug report.
I think it works as designed. (not saying that the design is good though ;-) )
Non-localized has only effect in the browser representation. On the application server the time zone of the user, project or server is used. and thus an hour offset to UTC is logical.