This is because when you create an OutputInterface trait object, the compiler forgets what the underlying type is, and when you return &mut Self, you are returning a reference to that underlying type. Since the compiler forgot what the underlying type is, the compiler is unable to interact with a &mut Self.
When you return a mutable reference to a trait object instead, the compiler doesn't need to know what the underlying type behind the reference is because the reference itself includes the information necessary to use the reference.