When you use:
IFS=/ echo "${array[*]}"
Then IFS is set local to the echo command (although not used by echo)
When you use:
IFS=/ x="${array[*]}"
Then these are two separated variable assignment, one for IFS and one for x, so the IFS is now permanently changed to /
as @jaypal mentioned.
When you use:
$ echo "${array[*]}"
Then - when quoted - the first character of IFS is used as an output field separator with expansion of the array
If it is unquoted, then it produces space separated fields:
$ echo ${array[*]}
Also, when you would use:
$ echo "${array[@]}"
Then each array element is expanded to a separate word, so the output field separator is not used so it becomes a single space..