原です。

> (10..10).size      == 0
> (10..10).to_a.size == 1
> 
> Range はポイントの集まりではなく、ポイントの数は step によって決まると
> いう事です。数学でもそうですよね? グラフでいえば参照点の数はメッシュ
> によって決まるような感じと思っています。

現在、each を持つこと(Enumerable)と、to_a を持つこと(Array化可能)は
ほぼ同値であって、Enumerable であるオブジェクト e に対して

  e.size == e.to_a.size

が成り立っています。

Enumerable な e に対して

  toa = []; e.each { |x| toa.push x }
  e.to_a == toa

である様に to_a は定義されるわけですから。

それを破るように Range の仕様を変えることは有り得ないんじゃ
ないかな。