I've had the same issues some time ago. In some cases it was a misconfigured MSDTC setting on one of the servers. But in some other cases I could not figure out the problem :crazy:. In the end I rebuild the query to one single statement.
In your case it would be somthing like below:
DELETE FROM server A table
OUTPUT
deleted.[column names]
INTO archive table on server B