While background validation runs after loading an assumeutxo snapshot, blocks needed only by the background (historical) chainstate are also tracked in mapBlocksInFlight. The condition that decides whether a new block is requested as a compact block counted those blocks as well, so with historical blocks in flight the new block at the tip was requested as a full block instead.
Do not count blocks that are only needed by the historical chainstate. Compact block relay then works normally during background validation.
Behavior is unchanged when no snapshot is loaded, because in that case there are no historical blocks to exclude.