So e.g. I'm looking at:

https://github.com/puppetlabs/puppetdb/blob/master/src/com/puppetlabs/puppetdb/http/experimental/report.clj

and 

https://github.com/puppetlabs/puppetdb/blob/master/src/com/puppetlabs/puppetdb/query/report.clj

Both of those return date/time fields w/o needing to do any special coercion.  It may be the case that it's working for me because it always assumes UTC, and some part of your code is introducing time zone stuff?  Not entirely sure.  Again, probably not a huge deal but I would like to understand the difference.