The comma that separates function arguments in a function call is not a comma operator - it's just punctuation that happens to be spelled in the same way as the comma operator. There's no sequence point between the evaluation of different function arguments, so that's why you get UB in that case.
On the other hand, in your expression:
x+=4,y=x*2;
the comma here is a comma operator, which introduces a sequence point; there's no UB.
In a declaration, the comma between declarators is also not a comma operator; however, the end of a full declarator (a declarator not part of another declarator) does introduce a sequence point, so a declaration like:
int a = 2, b = a + 1;
is not UB.