Ответ 1
Есть еще одна, тонкая разница:
File.join('foo','bar')
#=> "foo/bar"
['foo','bar'].join('/')
#=> "foo/bar"
Но если вы передадите аргумент, уже заканчивающийся на /
(что довольно часто при работе с путями), у вас не будет двух косой черты в результате:
File.join('foo/','bar')
#=> "foo/bar"
['foo/','bar'].join('/')
#=> "foo//bar"