First, the most obvious fact: You can store arbitrary data on Bitcoin since its very inception. Neither Segwit nor Taproot is needed for tokens. Doginals is a relatively new method to store NFTs and tokens on Bitcoin code from 2014/15 (Dogecoin can be seen technically as a "pre-Segwit Bitcoin").
The problem of many of these old protocols is that they clutter the UTXO set with data which is not necessary for transaction validation. That's why OP_RETURN was introduced in 2014 or 2015. OP_RETURN allows to store data on the chain without having to store it in the UTXO set.
OP_RETURN is also what would be used by Runes principally to store metadata. That is why I wrote it is better than BRC-20 and similar protocols. While BRC-20 does not clutter the UTXO set that much like a protocol in the style of Doginals, the problem of BRC-20 is that you need two transactions to move any token.
The unpopular truth is: While you have a blockchain with transactions structured like Bitcoin, where you can use any data you want for public keys, amounts and sequence data, then you can't prevent the creation of tokens nor NFTs. And OP_RETURN is the best try to make that "node-friendly" - i.e. that they don't have to bother with cluttered UTXO sets due to tokens.
There are ways to make tokens much more expensive to create, but that would need a complete rework of Bitcoin's inner workings. For example, I remember discussions about Grin, where it should be about 50-100 times more expensive to create an "arbitrary data storage solution" (for example, tokens or NFTs) than on BTC (given the same level of network congestion and the same unit value), because there are only few bytes on Grin per transaction you can use to store arbitrary data.