When to prefere a truncate over a batch-delete?
There are certain circumstances where you cannot use the TRUNCATE TABLE command and must use the DELETE command instead.


  You cannot use TRUNCATE TABLE on tables that: 
  
  • Are referenced by a FOREIGN KEY constraint. (You can truncate a table that has a foreign key that references itself.)
  
  • Participate in an indexed view.
  
  • Are published by using transactional replication or merge replication.
  
  For tables with one or more of these characteristics, use the DELETE statement instead.
  
  TRUNCATE TABLE cannot activate a trigger because the operation does not log individual row deletions. For more information, see CREATE TRIGGER (Transact-SQL).


There is a good explanation on MSDN:

https://msdn.microsoft.com/en-gb/library/ms177570.aspx

Also, see this question on Stack Overflow which has a lengthy discussion on the topic.