Eu não tenho uma caixa do OSX para testar, mas tente isto:
sed -E '
s/^([^,]*),([^,]*),([^,]*),(.*)/\x1f\x1f\x1f/
s/,/;/g
s/\x1f/,/g
' file
Isso transforma as 3 primeiras vírgulas no caractere de controle ascii "unit separator", traduz todo o resto das vírgulas em ponto-e-vírgula e, em seguida, converte os caracteres de controle novamente em vírgulas.
Demo:
$ echo "a,b,c,d,e,f" | sed -E 's/^([^,]*),([^,]*),([^,]*),(.*)/\x1f\x1f\x1f/; s/,/;/g; s/\x1f/,/g'
a,b,c,d;e;f