In the case of MaybeT, it isn't an optimization. It's a different
function. Using your proposed definition, we get:
*Main> flip runState 0 . runMaybeT $ mzero <*> lift (put 1)
(Nothing,1)
*Main> flip runState 0 . runMaybeT $ mzero `ap` lift (put 1)
(Nothing,0)