How to unify RustCrypto signature curves with generics?

I'm not sure what you mean by "accounted for directly". From your post it looks like you'll have to put that bound a lot of places.

And yes, there's a sort-of-but-not-strongly-enforced convention around not putting bounds where they're not strongly required. You can create a HashSet::<f32> and check it's capacity and whatnot, for example, even though you can't do anything useful like insert into it.

The convention may change if implied bounds someday removes the need to repeat the bound so many places.

I took a closer look and RustCrypto does strongly require the bound at the struct level as ultimately a SecretKey<C> is a <C as Curve>::Uint. So there's no getting around it in this case.