split(regex) returns result of split(regex,0) where 0 is limit. Now according to documentation (limit is represented by n)
If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.
(emphasis mine)
It means that in case of code like
"ababaa".split("a")
at first you will get array ["", "b","b","",""] but then trailing empty string swill be removed, so you will end up with array ["","b","b"]
BUT if your string contains only elements which split can match with its pattern, like
"ababab".split("ab")
at first array will contain ["","","",""] (three splits), but then empty trailing elements will be removed which means that all elements will be removed, which will leave you with [] (array with size 0).
So to get empty array as result you need to split on string which contains only substrings which can be matched by split parameter, so in case of split(" ") original string must be build only from spaces, and its length must be at least 1.
BTW if original string would be empty like "" split(" ") wouldn't happen so array with original string would be returned, which means you will still get [""] array with one element, not empty array.
You can say "but you said that trailing empty string are removed, so why this "" is not removed (it is trailing, and it is empty)?". Well yes, but removing trailing empty strings makes sense only if these strings ware created as result of splitting, so if splitting didn't happen "cleanup" is not required, so result array will contain original string as explained in my earlier answer on this subject.