OP_return and smart contracts are different.
OP_return is an opcode that allows you to store data on the blockchain without cluttering up the unspent cache of nodes because these outputs are 'unspendable'. This allows you to store arbitrary data such as a timestamped contract on the blockchain with little clutter in the network.
Smart contracts automates the process by executing the actions of the contract without the need for a third party. While OP_return can be used to code data into the blockchain, they cannot be used for smart contracts.
Here are some articles which are useful. Both are pretty old but are good resources:
Is the OP_RETURN for contracts and smart properties?Explanation of what an OP_RETURN transaction looks like