Ответы:
Да, и это также называется foldво многих других языках программирования и в математике. Ruby использует много псевдонимов, чтобы быть интуитивно понятным программистам с разным опытом. Если вы хотите использовать #lengthего Array, вы можете. Если вы хотите использовать #size, это тоже нормально!
injectчтобы пользователям не приходилось читать два описание и попытайтесь выяснить, совпадают ли они ... разве это не согласуется с принципом DRY?
В более поздних версиях документации Enumerable#reduceэто явно указано:
injectИreduceметоды являются псевдонимами. Это не дает никакого преимущества в производительности.
&:+), уменьшить, если это блок, ввести