Query performance differs greatly between a development setup and production
On an average of 3 executions, does the below code run any faster?

SELECT ProductId INTO TempQTYOnHand FROM [RemoteServer].remoteDB.dbo.QuantityOnHand 

DELETE FROM [RemoteServer].remoteDB.dbo.QuantityOnHand 

SELECT DISTINCT ProductId, Onhand INTO NEWQuantityOnHand FROM Inventory
WHERE ProductID IN (SELECT ProductId FROM TempQTYOnHand)

INSERT INTO [RemoteServer].remoteDB.dbo.QuantityOnHand 
SELECT ProductId, Onhand FROM NEWQuantityOnHand

DROP TABLE TempQTYOnHand 
DROP TABLE NEWQuantityOnHand


That one is a small, small difference but it won't hurt to test anyway, right?

Also, there are articles that say pushing is slower than pulling, and a few say otherwise.

So, in the interest of experimenting, try both cases where you also invoke pushing from the linked server. Yeah, sadly- you'll have to create a stored procedure on the linked server to push the data, and then call it from your main query so it 'pushes' the data.