Yes, whichever key is the shift key, waits until being released before sending the code. This is because it needs to know whether any other key has been pressed in the meantime, ie whether you are using it as shift, or it's normal function.
You don't have to have a shift key at all if you don't want to, you can unassign it completely.