La mia ipotesi è che, poiché ci hai mostrato uno schema semplificato, mancano alcune informazioni che determinerebbero il motivo per cui i valori VarietyID ripetuti per un determinato OrderID.
Quando hai più righe, SQL Server ne sceglierà una per l'aggiornamento in modo arbitrario.
In questo caso, devi prima raggruppare
UPDATE V
SET
Stock = Stock - foo.SumQuantity
FROM
tblVariety V
JOIN
(SELECT SUM(Quantity) AS SumQuantity, VarietyID
FROM tblOrderItem
JOIN tblOrder ON tblOrderItem.OrderId = tblOrder.OrderId
WHERE tblOrder.OrderId = 1
GROUP BY VarietyID
) foo ON V.VarietyId = foo.VarietyId
In caso contrario, la tabella PK OrderItems è errata perché se consente combinazioni OrderID/VarietyID duplicate (il PK dovrebbe essere OrderID/VarietyID, oppure questi dovrebbero essere vincolati univoci)