Why would you right shift 8 bits for 8 bit register?
This is a generic method.  The ubrr is an unsigned int which makes it 16 bits wide (2 bytes).
To break this into discrete bytes like in the example, you need to shift the bits right by 8 to get the high byte.
In your specific example it doesn't matter because the high byte is empty anyway, but what if you need a ubrr of 3,096?
Also, you might be confusing order of operations.  Your example doesn't load the register then shift it out, it takes the binary representation of 103, shifts it, then applies the result of that to the register.