岩崎です。

ruby 1.8.0 (2003-08-04) [i386-mswin32]で

'ABC'.index('') #==>0

となります。これは仕様ですか?

リファレンスマニュアルでは
> 引数 pattern には探索する部分文字列の指定を文字列、
> 文字コードを示す 0 から 255 の整数、
> 正規表現のいずれかで指定します。

とあるので文字列と解約してnilが返ってくるのが自然だと感じます。
'ABC'.include?('') #==> true
も何か釈然としませんが、正規表現と解釈されてしまうのでしょうか?