配列に [] でアクセスすると範囲外の添字は静かに nil を返しますが、fetch で範囲外を指定すると例外になります。存在確認を強制したいときにわざと使う書き方です。
出るコード
items = ["a", "b", "c"]
items.fetch(3) # 添字は 0〜2 まで
エラーメッセージ
index 3 outside of array bounds: -3...3 (IndexError)
直し方
items.length で長さを確認する、または fetch の第2引数にデフォルト値を渡します。
items.fetch(3, nil) # 範囲外なら nil