I will use ordinals as an example because they illustrate my question most effectively. My understanding is that ordinals are created by writing opcodes into the transaction, as you would with a transaction without a taproot. If I was doing a typical P2PKH transaction, I would put
"scriptPubKey": "OP_DUP OP_HASH160 HASH_OF_PUBKEY_IN_HEX OP_EQUALVERIFY OP_CHECKSIG"
as a lock script, but if I wanted to do an ordinal I believe I would just do my lock script
"scriptPubKey": "OP_DUP OP_HASH160 HASH_OF_PUBKEY_IN_HEX OP_EQUALVERIFY OP_CHECKSIG OP_FALSE OP_IF OP_PUSH "ord" OP_PUSH 1 OP_PUSH "text/plain;charset=utf-8" OP_PUSH 0 OP_PUSH "Hello, world!" OP_ENDIF"
It looks like this means I could do an ordinal in a Bitcoin transaction with an address without a taproot. So I could create an ordinal with a P2PKH address.
So what does tapscript do that P2PKH doesn't?