It has to do with your grouping, compare a simpler version:
"12:34:56:78:90".split(/(:)/)
=> ["12", ":", "34", ":", "56", ":", "78", ":", "90"]
"12:34:56:78:90".split(/:/)
=> ["12", "34", "56", "78", "90"]
Usually with the split function, the delimiter is left out of the result. The grouping parens causes it to keep the delimiter in the result. Without the groups, you would have:
"1234567890".split(/\d{3}/)
=> ["", "", "", "0"]
Which makes sense, there is nothing between the delimiters until the last 0. Then when you add the grouping, it intersperses the delimiters with the "in between" that is the usual result of split. The empty strings aren't the scrap, the groups of numbers are.
And lastly, having actually looked at the documentation, we read:
If pattern is a Regexp, str is divided where the pattern matches. Whenever the pattern matches a zero-length string, str is split into individual characters. If pattern contains groups, the respective matches will be returned in the array as well.