For the non-generic case, autoderef should handle it, which may be why it is less likely to be noticed.
In the generic case, I agree that this generalization is correct, and is a non-semver-breaking change (well, except for the fact that Box is #[fundamental] which has some special rules I don’t quite understand) but probably could easily lead to inference problems.
As for why we don’t have that default impl: the stdlib is very careful not to do anything that requires specialization yet, as it’s not stabilized yet (and still isn’t fully designed, there’s some really scary corners left).
Once specialization is stable, it might make sense to add this impl to the stdlib.
I’m pretty sure that nothing’s stabily exposed that’s impossible without specialization. (If there is, I’m wrong and I admit it, but I’ve seen potential specialization-requiring impls blocked on stabilized specialization.)
Of course, it’s being used for optimization. But only in the sense that the general impl works for all cases, and a subset is explicitly specialized to a more efficient path.