I would guess this was a mistake. It doesn't even do what you'd expect when debug assertions are off. It does value << shift as u8 instead of value >> -shift. This probably reflects the behavior of the hardware, but isn't very useful to humans. The shift methods just take u32.
It would be reasonable for shifts to only work with u32 because all the other bit-count-oriented APIs only work with u32: BITS, count_ones, ilog2, leading_ones, pow, etc.