First made popular in C, the binary operator shorthand, for example:
a += b # and...
a ||= b
acts like:
a = a + b # and ... note the short circuit difference ...
a || a = b
The rearrangement for a more effective short circuit is a graceful way of dealing with a check for nil as it avoids the assignment altogether if it can. The assignment may have side effects. Just another example of seriously thoughtful design in Ruby.
See http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html for a more wordy explanation.