In the original design of Bitcoin, the conditions for spending an output would be explicitly defined in the output script (scriptPubKey). P2PK, P2PKH and bare multisig are examples of this. However, it was soon realized that this way the recipient was passing the cost of a more complex locking script onto the sender. Since then, every new output format has had a fixed size.
P2SH, P2WSH and P2TR-script-path require the recipient to reveal a script (which usually includes OP_CHECKSIG or other signature checks) and satisfy it. P2WPKH requires only the public key and signature, there is no script (the OP_CHECKSIG is only implicit). Finally, P2TR-key-path requires only a signature.
For example, this is how BIP141 defines the validation of P2WPKH inputs:
If the version byte is 0, and the witness program is 20 bytes:
- It is interpreted as a pay-to-witness-public-key-hash (P2WPKH) program.
- The witness must consist of exactly 2 items (≤ 520 bytes each). The first one a signature, and the second one a public key.
- The HASH160 of the public key must match the 20-byte witness program.
- After normal script evaluation, the signature is verified against the public key with CHECKSIG operation. The verification must result in a single TRUE on the stack.
As you can see, even though the specification references opcodes to denote cryptographic operations, no script execution actually takes place.