This works as I would expect:
$ arr=(a b c); IFS=+; echo "${arr[*]/a/x}"
x+b+c
But for some reason, this ignores IFS:
$ arr=(a b c); IFS=+; arr=${arr[*]/a/x}; echo "$arr"
x b c
Here is the behaviour of other shells that allow that kind of syntax:
input: arr=(a b c); IFS=+; echo "${arr[*]/a/x}"
=======================
bash: x+b+c
ksh: x+b+c
yash: x+b+c
zsh: x+b+c
input: arr=(a b c); IFS=+; arr=${arr[*]/a/x}; echo "$arr"
=======================
bash: x b c
ksh: x+b+c
yash: x+b+c
zsh: x+b+c
