However, there is a more important difference, when just testing for booleans.
Logical or (||) and logical and (&&) short-circuit. This means that if it can figure out the value from the first part (first part is true for or, first part is false for and), the second argument will not even execute. Since the binary operators (| and &) have to support more than one bit, it's impossible to short-circuit reliably, which can be useful, even when only dealing with a single bit.