Here is a copy of the tl;dr section from an extended analysis of pubkey2index and index2pubkey cache usage provided by Navie Chan:

tl;dr: index2Pubkey is used in a lot more scenarios than pubkey2Index. The use cases for index2Pubkey do not require unfinalized information. process_deposit() is the only place in consensus spec that needs unfinalized information and it utilizes pubkey2Index. In terms of the two-cache approach, unfinalizedIndex2Pubkey is not needed since there is not a place that utilizes it. unfinalizedPubkey2Index, however, is needed for process_deposit().

unfinalized pubkey2Index?unfinalized index2Pubkey?
onBlock - state_transition - verify_block_signatureN/ANo
onBlock - state_transition - process_block - process_randaoN/ANo
onBlock - state_transition - process_block - process_operations - process_proposer_slashingN/ANo
onBlock - state_transition - process_block - process_operations - process_attester_slashing - is_valid_indexed_attestationN/ANo
onBlock - state_transition - process_block - process_operations - process_attestation - is_valid_indexed_attestationN/ANo
onBlock - state_transition - process_block - process_operations - process_deposit - apply_depositYesN/A
onBlock - state_transition - process_block - process_operations - process_sync_aggregate - eth_fast_aggregate_verifyNoNo
onBlock - state_transition - process_block - process_bls_to_execution_changeN/AN/A
onBlock - state_transition - process_block - process_voluntary_exitN/ANo
p2p - beacon_block ---- onBlockN/ANo
p2p - beacon_aggregate_and_proof ---- onAttestationN/ANo
p2p - voluntary_exit - process_voluntary_exitN/ANo
p2p - proposer_slashing - process_proposer_slashingN/ANo
p2p - attester_slashing - process_attester_slashingN/ANo
p2p - beacon_attestation_{subnet_id} ---- onAttestationN/ANo
p2p - sync_committee_contribution_and_proofN/ANo
p2p - sync_committee_{subnet_id}N/ANo
p2p - bls_to_execution_change - process_bls_to_execution_changeN/AN/A
p2p - blob_sidecar_{subnet_id} - verify_blob_sidecar_signatureN/ANo