Why is the bitwise OR and not AND used to combine rigidbody constraints?
This is fundamental to how these boolean operators work. Each constraint is a separate bit. Consider the following example, written in binary:
myConstraint1 = 01
myConstraint2 = 10
If I was to apply the bitwise AND operator to these constraints I would get nothing (01 & 10 = 0). If I was to apply the bitwise OR operator to them, I would collect both bits (01 | 10 = 11) and so this is equivalent to requiring that both constraints be respected. This merged mask is then checked by later code to see which constraints should be applied, using an AND operation to pick out specific items, i.e.
mergedConstraints & myConstraint1
If this test is non-zero then I know that the constraint should be applied.