One option to maintain the clean modularity of your notification task is to use two packages to organize or "scope" your code.
The added "controller" package contains an Execute Package Task for the existing package of ETL tasks. The Send Mail Task is moved to the controller package with an On Failure constraint from the Execute Package Task. Pass the path of the ETL package's log file back to the controller package as a global variable. Set the FileAttachments property of the Send Mail Task to the global variable value so that the log file can conveniently be read as an attachment to the failure notification email.
This would avoid the development burden of building a custom task or ActiveX script to avoid redundancy.
(Of course, a custom task is the direction to go when you need powerful auditing or, especially, an error handler...but throwing COM or Visual Studio into the mix probably won't meet the spec for simplicity of maintenance.)