This is an intentional choice for semver -- making the bounds apply to the type parameters means that its behaviour is independent from the implementation choices for which fields are in the struct. It would be easy for the macro to generate bounds for each of the field types instead, but that's intentionally not done so that changing private fields doesn't change when the trait is derived.
I don't think these are even worth a
FIXME, since that's just how things intentionally work, and putting a note about it on every implementation that's manual because it it isn't helpful.
Should there be a way to specify bounds explicitly in derive in the future (see proposals such as RFC: Generic parameters in derive by mzabaluev · Pull Request #2811 · rust-lang/rfcs · GitHub), then of course the standard library would plausibly start using it to replace some manual implementations.