At least with the SQLite3 adapter, ActiveRecord does use the correct time zone. When I had my default timezone set to :local, ActiveRecord would take a datetime from the database, which was in UTC, and place it into the local timezone. This resulted in ActiveResource doing a double conversion.
A quick example would be:
time = Time.now
record = Record.new(:created_on => time)
record.time == time # => true
record.save
record.reload
record.time == time # => false
Inspecting record's time reveals that ActiveRecord places it in the local time zone w/o converting it from the database's UTC value. What you end up with is UTC time in the local time zone. That's not a good thing, especially when you send this to ActiveResource which does its own conversion to UTC. That results in a double conversion, UTC * 2.