> But does using the same digit for the two remainders really make sense?

Sure you can. It is a trade-off really what you want. As discussed here, the Brazilian CPF uses the same digit. But maybe that's also the reason why they generate two check digits.

The other thing I don't like so much is that _mod11CheckDigit10()_  and _mod11CheckDigit11() _ make the constraints very convoluted with options. The idea initially was to be able to easily switch between types just using the type enum. I am wondering whether it would not make more sense to have explicit Mod10 and Mod11 constraints in this case. Keep the existing ModCheck behaviour (maybe even deprecate the constraints) and have dedicate @Mod10 and @Mod11.