Это делается в O (1), так как Range # === (value) сравнивает значение только с диапазоном # сначала и Range # последним.
Если вы сначала вызываете Range # to_a, а затем Array # include?, он запускается в O (n), так как Range # to_a, необходимо заполнить массив n элементами, а Array # включить? необходимо снова выполнить поиск по n элементам.
Если вы хотите увидеть разницу, откройте irb и введите:
(1..10**9) === 5 #=> true
(1..10**9).to_a.include?(5) # wait some time until your computer is out of ram and freezess