Can anyone explain why this:
$parent = Parent::findFirstById($id);
$parent->getChildren()->delete();WILL NOT fire a beforeValidation() event...
as this does (tested):
$parent = Parent::findFirstById($id);
foreach( $parent->getChildren() as $child) {
    $child->delete();
}