Supongo que debido a que nos ha mostrado un esquema simplificado, falta cierta información que determinaría por qué se repiten los valores de VarietyID para un OrderID determinado.
Cuando tiene varias filas, SQL Server elegirá arbitrariamente una de ellas para la actualización.
Si este es el caso, primero debe agruparse
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
De lo contrario, el PK de la tabla OrderItems es incorrecto porque permite combinaciones duplicadas de ID de pedido/ID de variedad (el PK debe ser ID de pedido/ID de variedad, o estos deben ser únicos restringidos)