the oracle to give me a malicious result, I can generate a fraud proof (ZKP or smart contract) in order to claim a reward.
This works well to prevent the oracle from colluding with someone else. This however fails in the situation where the oracle is also the one requesting the lookup.
A non-trivial amount of the reward (bond) can be burnt by the smart contract to eliminate this problem.
General note on the approach: if the security assumptions of an optimistic design are to be assumed, why not bypass ZK altogether and just compile the computation into a general-compute VM that has a fraud fault prover (off chain) / fault verifier (onchain). This exists already: EVM/WASM (by Arbitrum) and EVM/MIPS (Optimism)