I cannot reproduce your problem on Linux using bash 4.2.46 and bash 4.3.30. However, here is an adapted version that shows the described behavior:
string="one:two:three:four"
IFS=:
read -ra array_1 <<< $string
for i in "${array_1[@]}"; do printf "i = [$i]\n"; done
read -ra array_2 <<< "$string"
for i in "${array_2[@]}"; do printf "i = [$i]\n"; done
This is because the variables are not actually divided into spaces, they are divided into $IFS(by default, this is a space, tab and line).
Since we redefined $IFSthis value with colons, we must be careful when quoting. Spaces no longer matter.
, bash hardcodes string_list, write_here_string. IFS , , , read , .
PS: , , , .