The latter lets us assign to a bitfield while also checking that the RHS
fits into the field.
There are many places where we check that the RHS "fits" before
assigning it to a bitfield; this lets us replace those with a single
line (which also correctly infers the size of the LHS).
You're also relying on a bunch of other things here... Mostly that Type can be memset to all 1s without violating any of its invariants such as that this will create no trap representations.
I'm not sure how to word a static assert such that it catches this, but at the least you should check that it is standard layout and trivially copyable.