Disabling system workflow messages
Use the hook civicrm_alterMailParams.

Inspect the $params that are passed in, and if you don't want the message sent, set $params['abortMailSend'] to '1' (or any non-empty value).

See lines 71-77 of CRM/Utils/Mail.php to see how this is processed by CiviCRM. This doesn't work for CiviMails but works for other emails sent by CiviCRM.