Meu palpite é que, como você nos mostrou o esquema simplificado, faltam algumas informações que determinariam por que os valores de VarietyID repetidos para um determinado OrderID.
Quando você tiver várias linhas, o SQL Server escolherá arbitrariamente uma delas para a atualização.
Se este for o caso, você precisa primeiro agrupar
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
Caso contrário, o PK da tabela OrderItems está errado porque se permite combinações duplicadas de OrderID/VarietyID (O PK deve ser OrderID/VarietyID, ou estes devem ser exclusivos restritos)