I figured it out. SqlCache is used via middleware in Rails: use ActiveRecord::QueryCache
This means that it's the ActionController that wraps action processing with the cache blanket. Obviously within delayed job there's no ActionController and no caching. All you need to do to bring caching back is this:
def method_ran_by_delayed_job
ActiveRecord::Base.cache do
# all your crazy code
end
end