Cadena de longitud cero que se devuelve desde String # split

En Ruby 1.9.3 (y probablemente en versiones anteriores, no estoy seguro), estoy tratando de averiguar por qué el método de división de String # de Ruby me está dando ciertos resultados. Los resultados que estoy obteniendo parecen contraintuitivos de lo que esperaría. Aquí hay un ejemplo:

"abcabc".split("b") #=> ["a", "ca", "c"]
"abcabc".split("a") #=> ["", "bc", "bc"]
"abcabc".split("c") #=> ["ab", "ab"]

Aquí, el primer ejemplo devuelve exactamente lo que esperaría.

Pero en el segundo ejemplo, estoy confundido en cuanto a por qué #split está devolviendo una cadena de longitud cero como el primer valor de la matriz devuelta. ¿Cuál es el razonamiento de esto? Esto es lo que esperaría en su lugar:

"abcabc".split("a") #=> ["bc", "bc"]

Y a lo largo de esa misma línea, ¿por qué no se devuelve una cadena de longitud cero final en el tercer ejemplo? Si el segundo ejemplo devuelve una cadena de longitud cero como su primer valor, entonces el último ejemplo debería devolver lo mismo que su último valor.

Ilumíname, ¿qué me estoy perdiendo aquí?

EDITAR: Mirando más en ello, me doy cuenta de por qué este es el comportamiento predeterminado y por qué mi pensamiento es completamente erróneo. Si tuviéramos que pasar por un archivo CSV, por ejemplo, dividiéndonos en cada columna, nuestros datos se descartarían porque las columnas iniciales vacías se ignorarían.

También es importante tener en cuenta que esta pregunta no está relacionada solo con Ruby; estoy aprendiendo que muchos otros idiomas se comportan de la misma manera. Simplemente estaba usando Ruby cuando me enteré de esto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta