C'est probablement un comportement prévu plutôt qu'un bug. Selon la documentation, diviser un tableau:
Divise le tableau en un ou plusieurs sous-réseaux en fonction d'une valeur de délimitation ou du résultat d'un bloc facultatif.
Cela ne garantit aucune garantie sur les espaces contigus ou leader.
D'un autre côté, le Ruby Core Documentation pour String#split
États:
Si le motif est une chaîne, son contenu est utilisé comme délimiteur lors du fractionnement STR. Si le motif est un seul espace, STR est divisé sur les espaces blancs, avec des espaces blancs et des exécutions de caractères blancs d'espace contigu ignoré.
Comme vous pouvez le voir, le comportement que vous attendez ne fonctionne qu'avec Whitespace, pas pour n'importe quelle chaîne.
"abc ccc def ".split("c")
=> ["ab", " ", "", "", " def "]
Lorsque vous divisez un tableau, le concept de "Whitespace" n'a plus de sens. Je pense donc que le comportement est raisonnable, si peut-être contre-intuitif au début.