It's a matter of personal preference - I hear valid arguments for both options.
What is more obvious, more understandable to you?
Do you prefer to have automagic deletion? Then use
ON DELETE CASCADE
or do you prefer to be in full control of these situations to know exactly when and what is being deleted? Then implement it in your own custom code
There's no right or wrong, no "better" or "worse" - it's more about your own personal preference and how you feel more comfortable with the code.