In my point of view, I will say using the “LifecycleState change” notifications works fine. While having an OOTB email, why we should go to workflows? For this, you can make use of the below link.
Also, if you are going to notify “LifecycleState Change” and going to make a certification or something for the identity which underwent LCS change, you can go through the workflows.
If you are looking for notifying not just the identity but its manager or certain set of identities or DL for certain reconciliation purpose.
Then I will suggest a Workflow where you can decide based on the LCS state what type of notification you need, who you want to be notified can also be customised based on Identity & its LCS and even take Dept or Region into consideration for more customization.
No doubt the WF will get longer but gives you a vast variety of custom emailing.
While workflows will give you a lot of flexibility to control sending email and to modify the content, There is a lot that you can do with the email notification for lifecycle states as @MVKR7T said. The process will fire for every user and every lifecycle state change. If you want to control if the message is sent and the specific context, you can also use velocity in the email template. For example,
#if($identityLifecycleState.name == "Inactive")
<P> This is a notification that $user.firstname $user.lastname has been
disabled. Please follow the offboarding checklist to retrieve their laptop,
etc.</P>
...
#else
<!-- No email will be sent for other LCS -->
#end