The biggest advantage that I have had in the past, in DDL Cascade Delete, is that it supports itself.
Imagine this scenario:
TableB - - - - TableNew / TableA \ TableC
When you add TableNew , with cascading deletion, you do not need to add code to handle deletions from TableA or TableB.
With remote code, you have at least two places to add new code.
The main advantages that I found for managing removal through code:
1. Stop accidental deletion (Thanks for breaking the foreign key!)
2. It can deal with the following scenario where DDL often cannot.
TableB / \ TableA TableNew \ / TableC
source share