Bash Man page quote
Any element of an array may be referenced using ${name[subscript]}.
The braces are required to avoid conflicts with pathname expansion. If
subscript is @ or * , the word expands to all members of name. These
subscripts differ only when the word appears within double quotes.
IF the word is double-quoted, ${name[*]} expands to a single word with
the value of each array member separated by the first character of the
IFS special variable, and ${name[@]} expands each element of name to a
separate word.
When there are no array members, ${name[@]} expands to nothing. If the double-quoted expansion occurs within a word, the
expansion of the first parameter is joined with the beginning part of
the original word, and the expansion of the last parameter is joined
with the last part of the original word.
Which means:
munai@munai-devops:~$ declare -a array
munai@munai-devops:~$ array=(1 2 3)
munai@munai-devops:~$ bakIFS=$IFS
munai@munai-devops:~$ IFS=","
munai@munai-devops:~$ echo "${array[*]}"
1,2,3
munai@munai-devops:~$ echo "${array[@]}"
1 2 3