For the release of the Rev B boards, the issue of u-boot having a bug that caused newer revisions of boards to revert to pre-xM settings meant that it was easiest (had the best software experience) to not change the GPIO-based revision ID settings. If you want to detect that you have a Rev B board (that doesn't require any software changes over Rev A), then you can simply detect the CPU revision. Honestly, I don't know why it had to become Rev B, but I think that is the convention (CPU revisions causing board revision updates) and don't think it matters much either.
For xM Rev C boards, there was a change to the way the USB hub is powered, so the change to the GPIO-based revision ID settings became required. Thus, you'll find that old MLO/u-boot/uImage won't work with the xM Rev C boards due to that bug with the software treating newer revision boards as pre-xM boards. If you update the MLO/u-boot/uImage to newer versions, you'll find that software will work on both boards.
The patches in question are (placed here for my reference and soon to end up on a FAQ somewhere):
MLO (upstream):
http://gitorious.org/x-loader/x-loader/commit/2efa178acd56d83c86210b5934895cfb9ea62125u-boot (upstream):
http://git.denx.de/?p=u-boot.git;a=commitdiff;h=f6e593bb1255d1e15201cb5dec8c95264489e729 (reports unknown version, but works)
kernel:
http://gitorious.org/beagleboard-validation/linux/commit/bfca58987039791522d1821e0506f8a113a0c239 (looks like this one still needs to be cleaned up and submitted upstream -- any help is useful here)
Note that in the kernel patch, the polarity of the USB hub power enable signal is the same on pre-xM boards and xM boards post-C, whereas xM boards rev A & B have it reversed.