How can I avoid repeating the same condition in a "when matched then update" clause?
I would recommend simply avoiding MERGE in the first place for all of the reasons listed here and just simply use a standard update statement.

UPDATE A 
SET
    Col1 = b.Col1 + b.Adjustment
    ,Col2 = b.Col2 + b.Adjustment
    ,Col3 = b.Col3 + b.Adjustment
FROM ATable as A
inner Join TableB as B
    ON a.ID = b.ID
    AND b.NeedsAdjustment = 1
;
UPDATE A 
SET
    Col1 = b.Col1 
    ,Col2 = b.Col2
    ,Col3 = b.Col3
FROM ATable as A
inner Join TableB as B
    ON a.ID = b.ID
AND b.NeedsAdjustment &lt;&gt; 1
--Or INSNUL(NeedsAdjustment,0) If it's a nullable column
;


In the long run this would be a more stable approach than using MERGE. I've also added the &lt;&gt; because if that's not there your UPDATE will overwrite the first UPDATE.