I would add the Segwit versions: P2WPKH and P2WSH, which can also be wrapped in P2SH scripts.
The P2TR format introduced by Taproot allows combining a PK spending path with a script spending path in the same output. When spending from the PK a valid signature must be provided. For script spending path you need to reveal the branch of the script (and a Merkle proof that you committed to this script) you want to execute instead of the full script.