I don't think it's as cut and dry as you describe. With the MSB-first approach, sure the "current" bits are at the end you don't want, so you need a shift to move them into the low bits - but this (logical) shift does double duty since it zeros all the other higher bits which you usually need to do before using it as well.
With the LSB-first approach, where the current bits are already the low end, you usually can't use them directly (e.g., to do arithmetic on them, or use them in an address calculation) since you need to mask off the higher bits[1] - how do you do that? You can use two shifts: << then >>, or generate a mask and AND it, or ...? If the number of bits read amount is a compile-time constant it's probably as simple as a single AND, but the non-constant case seems a bit worse for LSB-first.
You say that the current bits just naturally fall off the end after shifting in the LSB-first case, but the same is true in the MSB-first case: they fall off the left side after a left shift, instead of off the right side after a right shift.
[1] Yes, there are exceptions such as if you want to use say exactly 8 bits and your hardware has some efficient way to refer to the bottom 8 bits of a register (see: x86) or if having garbage in the high bits doesn't matter for your subsequent operations (or perhaps you can amortize the zeroing over several bit reads: e.g,. you read a bunch of 7-bit fields, add them, then zero the high bits).
With the LSB-first approach, where the current bits are already the low end, you usually can't use them directly (e.g., to do arithmetic on them, or use them in an address calculation) since you need to mask off the higher bits[1] - how do you do that? You can use two shifts: << then >>, or generate a mask and AND it, or ...? If the number of bits read amount is a compile-time constant it's probably as simple as a single AND, but the non-constant case seems a bit worse for LSB-first.
You say that the current bits just naturally fall off the end after shifting in the LSB-first case, but the same is true in the MSB-first case: they fall off the left side after a left shift, instead of off the right side after a right shift.
[1] Yes, there are exceptions such as if you want to use say exactly 8 bits and your hardware has some efficient way to refer to the bottom 8 bits of a register (see: x86) or if having garbage in the high bits doesn't matter for your subsequent operations (or perhaps you can amortize the zeroing over several bit reads: e.g,. you read a bunch of 7-bit fields, add them, then zero the high bits).