ActiveJob - это рельсовая прослойка для работы над фоновыми задачами.
При этом что конкретно будет выполнять эти фоновые задачи (sidekiq, rescue, и пр.) - это уже дело десятое.
Таким образом, если мы используем только ActiveJob, то мы можем хоть каждый день менять конкретного исполнителя, не переписывая кучу кода.
Сегодня мы используем Sidekiq, а завтра перешли на Delayed::Job, а послезавтра - на Resque. Если работаем через ActiveJob, то миграция будет представлять собой изменение конфига, а не переписывание во всём коде вызовы методов конкретных реализаций.