The + 'a in dyn Fn(...) -> ... + 'a denotes the lifetime of the function (trait object), not the lifetime of the output. You need to read this as dyn Trait + 'a with Trait being Fn(...) -> ..., the + binds weaker than the ->.
In your code example, the output type Baz has no lifetimes attached at all. If the output type was, say, &Baz, then relating it to the function input type as in dyn for<'a> Fn(&'a Bar) -> &'a Baz would work perfectly well; in fact dyn Fn(&Bar) -> &Baz would even be a shorthand for this (using lifetime elision).
The elision on Baz is confusing as it can lead you to think the function return doesn't borrow from the inputs [1], so Baz<'a> or Baz<'_> are recommended. [2]