Transaction level difference between using a large IN filter VS. "BEGIN TRAN/COMMIT"
From a logging point of view 1 and 2 will be about the same as in both cases you are doing all the deletes within a single transaction.  There will be lots of locking and probably blocking while the delete is being run.  #3 is a single transaction per batch, so users won't be impacted very much and you'll have lots of small transactions in the transaction log instead of one large one.  #2 and #3 should take about the same amount of time to run.  #1 should take less time than #2 and #3 because it's just one command, however the run time will probably still cause problems.

I'd probably want to do something like this.  This will minimize the locking and blocking that needs to happen by only dealing with 1000 rows at a time.

SELECT NULL
WHILE @@ROWCOUNT &lt;&gt; 0
BEGIN
  DELETE TOP (1000) FROM dbo.x
  WHERE ID IN ( /* if possible use "BETWEEN 1 and 100000" instead*/
  1
  ,2
  ,3
  ,4
  ...
  ,100000
  )
END