Probablemente sea un comportamiento previsto en lugar de un error. Según la documentación, dividir una matriz:
Divide la matriz en una o más subarrañas en función de un valor delimitador o el resultado de un bloque opcional.
Esto no garantiza los espacios contiguos o principales.
Por otro lado, el Documentación del núcleo de Ruby por String#split
Estados:
Si el patrón es una cadena, entonces su contenido se usa como delimitador al dividir STR. Si el patrón es un solo espacio, STR se divide en espacios en blanco, con espacios en blanco líder y carreras de personajes de espacios blancos contiguos ignorados.
Como puede ver, el comportamiento que espera solo funciona con Whitespace, no para cualquier cadena.
"abc ccc def ".split("c")
=> ["ab", " ", "", "", " def "]
Al dividir una matriz, el concepto de "espacio en blanco" ya no tiene sentido. Así que creo que el comportamiento es sensato, si tal vez al principio contradictorio al principio.