The idea of derive on trait is just about the same: it should do nothing but add this trait implementations.
The only difference is that when you use derive on type, you already have type and name trait you want to be implemented, and when you use derive on trait you already have trait and name which struct implementing it must be generated.
The argument about using procedural macro attribute also may be applied to struct derives: derive isnāt needed at all if macro attributes are allowed.
But derive provides important guarantee (compared to arbitrary macro attribute): item itself can not be modified, so multiple derives can be combined perfectly, and order of applying is not important.
I donāt insist on usage of derive word for this functionality, Iām not native speaker, so maybe it looks strange or something. But some thing for traits with same guaranties as derive must exist, donāt you think so?