An additional workaround to this is you can add a tag to the entity query and then alter it in a separate hook_query_TAG_alter
hook. It's an extra step but it gets the job done and gives you direct access to the SQL query for you to modify. So you can generate the entity query like you normally would, and any extra SQL that it does not support you can modify as needed.
Entity query:
/** @var \Drupal\node\NodeStorage $storage */
$storage = \Drupal::entityTypeManager()->getStorage('node');
$query = $storage->getQuery()
->addTag('archive_press_releases')
->currentRevision()
->condition('type', ['post_page', 'story_page'], 'IN')
->condition('field_date', $formatted, '<=')
->sort('field_date');
$result = $query->execute();
hook_query_TAG_alter example:
/**
* Implements hook_query_TAG_alter().
*/
function bax_archiving_query_archive_press_releases_alter(Drupal\Core\Database\Query\AlterableInterface $query) {
$query->addJoin('LEFT', 'content_moderation_state_field_data', 'md', 'md.content_entity_revision_id = base_table.vid');
$query->condition('md.moderation_state', 'archived', '<>');
}