psql doesn't provide object instantiation on the results being passed back from the server: all it does is print stuff to the screen. That JDBC and psql different in their behavior with respect to timestamps/dates is unsurprising in that light. I don't know how libpq-based C (or other) language programs operate within this area but that would be the proper API to compare JDBC to.
As a work-around have your application require psql on the client machine and shell out to it. Or hack the driver - though using your timezone-less connection for anything other than finding out the server timezone is probably something you'd want to avoid.