I can't say I'm all that sure if whether it's relevant or not, but the GhostCell API uses impl for<'a> FnOnce(…) -> R and I don't think 'static works there.
But I admit that I'm not confident that I'm following the logic here properly and may not actually be relevant; it just reminds me of that.
It's not really relevant. I'm not claiming that there's no difference between the types dyn for<'a> Tr<'a> and dyn Tr<'static>, there definitely is! I'm saying that the relationship between those two types might be fully described by a set of coercion rules and without additional/alternative "magic" in type-checking and/or type-inference.
This is because you're trying to use a supertype in place of a subtype, but this is not guaranteed to work (the opposite it possible though). To make a simplier example without lifetimes, it's as if you're saying that a function that requires T: Ord can't be changed to use T: PartialOrd, but the opposite is possible because Ord implies PartialOrd.