Este é provavelmente um comportamento pretendido e não um bug.De acordo com a documentação, dividindo um array:
Divida a matriz em um ou mais subarrays com base em um valor delimitador ou no resultado de um bloco opcional.
Isso não oferece garantias sobre espaços contíguos ou iniciais.
Por outro lado, o Documentação principal do Ruby para String#split
afirma:
Se o padrão for uma corda, seu conteúdo será usado como delimitador ao dividir o STR.Se o padrão é um espaço único, o STR é dividido no espaço em branco, com o espaço em branco e as execuções de caracteres contíguos em branco ignorados.
Como você pode ver, o comportamento esperado funciona apenas com espaços em branco, não com qualquer string.
"abc ccc def ".split("c")
=> ["ab", " ", "", "", " def "]
Ao dividir um array, o conceito de "espaço em branco" não faz mais sentido.Portanto, acho que o comportamento é sensato, embora talvez contra-intuitivo a princípio.