functionality can also always be added if really needed, through OP_NOPx
It is even better than that: they can be added in a TapScript, just by replacing OP_SUCCESS. Then, you will have them in the same position. And I guess that opcodes like OP_SUBSTR or OP_CAT could be activated, because they seems to be useful in some protocols.
nothing prevents me from making bitcoin turing complete
Using OP_RETURN to push data on bitcoin and getting Turing completeness outside is a different thing that making Bitcoin Turing complete by itself.