Q:

Ruby constant double pipe equals value vs. defined? constant

Double pipe equals:
MY_CONST ||= 42

Operator defined?:
MY_CONST = 42 unless defined? MY_CONST

Why the second way is overwhelmingly more common? Is there any drawbacks in the first one?

A:

In the general (constant and variables) case, if MY_CONST is false or nil, then it would be assigned to 42. 
Specific to the constant case, you shouldn't be reassigning constants (though Ruby will allow you to); the defined? check sees if the constant has been declared yet.
To demonstrate both problems:
2.0.0-p353 :001 > MY_CONST = false
 => false
2.0.0-p353 :002 > MY_CONST ||= 42
(irb):2: warning: already initialized constant MY_CONST
(irb):1: warning: previous definition of MY_CONST was here
 => 42
2.0.0-p353 :003 > MY_CONST
 => 42

