You are correct, staking with an smart contract address is possible. Note that normally the staking keys are separate of the normal signing keys of an address that hold the funds that are staked. So the staking rewards will be deposited in a stake reward address that is not governed by the smart contract. I have not thought up a method decentralize these funds (maybe someone else has? Can another smart contract be used for this?). Thats is, say I have a DeFi contract that locks up 10 million ada, the rewards will be deposited in an stake address that is not governed by any logic.
Another question to ask is, how do these funds get distributed given any contract. Or are they rewards of the owner of the contract and do not need to be distributed? These questions need to be answered as a community. In my opinion it always best to stake those DeFi funds as they contribute to the decentralisation of the protocol. Maybe the DAO’s of the future decide which pools get delegated to and the rewards are distributed to the stake holders of the governance token of said governance token (like dividend). All these things are quite new and innovation is on its way to find good solutions for these questions.