Earlier quoted context omitted.
Reading up an static vs dynamic dispatch may help - https://en.wikipedia.org/wiki/Dynamic_dispatch . Essentially Box is static dispatch. You know at compile time which exact methods you are going to call. Box is dynamic dispatch. Since Foo is a trait, at compile time you won't know which methods are called, it depends on the type of the object passed in (as long is it implements the Foo trait).
Your example is misleading. If Foo is a trait Box and Box are the same thing. Impl Foo is for static dispatch. Illustrating the need to dump the old unqualified syntax.
Is this right:
If Foo is a struct then Box is static dispatch. If Foo is a trait Box is dynamic dispatch, but then so is Box - but that is the regrettable point. So from now on, if Foo is a trait we should be writing Box, which is largely syntactic sugar to make the situation more clear?
I don't fully understand what the release notes are saying about using impl Trait. When would you use Box vs Box?