Here's a paste of the (relevant) exim logs that they provided for me (emails and IP addresses are all anonymised): https://paste.ee/p/GhRPr#f1J0xUE7zzgbmteWWwTDsmf7kt757I98
/var/log/exim_mainlog:2017-07-17 16:25:02 H=([127.0.0.1]) [Blesta_IP_Address]:36188 X=TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no F=<billing@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
/var/log/exim_mainlog:2017-07-17 16:26:09 H=(my.example.com) [Blesta_IP_Address]:37270 X=TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no F=<sales@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
/var/log/exim_mainlog:2017-07-17 16:26:40 H=(my.example.com) [Blesta_IP_Address]:37450 X=TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no F=<sales@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
/var/log/exim_mainlog:2017-07-18 10:14:06 H=(my.example.com) [Blesta_IP_Address]:48182 X=TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no F=<billing@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
/var/log/exim_mainlog:2017-07-18 10:16:08 H=(my.example.com) [Blesta_IP_Address]:49364 X=TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no F=<billing@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
/var/log/exim_mainlog:2017-07-18 10:38:34 H=(my.example.com) [Blesta_IP_Address]:44890 F=<billing@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
/var/log/exim_mainlog:2017-07-18 10:43:03 H=(my.example.com) [Blesta_IP_Address]:48352 F=<billing@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
/var/log/exim_mainlog:2017-07-18 10:43:22 H=(my.example.com) [Blesta_IP_Address]:37954 X=TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no F=<billing@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
/var/log/exim_mainlog:2017-07-18 10:44:07 H=(my.example.com) [Blesta_IP_Address]:38252 X=TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no F=<billing@example.com> A=dovecot_login:smtp-username@domain.com rejected RCPT <recipientemail@domain.com>: Sender verify failed
All of those "Sender Verify Failed" errors occur when sending from the root domain. On the other hand, on any subdomain, there is no such error:
/var/log/exim_mainlog:2017-07-18 11:32:30 1dXVQE-00043Y-3g <= sales@my.example.com H=(my.example.com) [Blesta_IP_Address]:38178 P=esmtpsa X=TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no A=dovecot_login:smtp-username@domain.com S=2027 id=cca1af60f07ba5bb530da86ad7c459c4@my.example.com T="Welcome to My Company" for recipientemail@domain.com
/
That is probably why the errors were occurring, the incoming mail server (at the same provider) was rejecting the mails from Blesta because it couldn't verify that my Blesta install actually sent them.
EDIT: Yep, the above is the case. Their cPanel server requires the email address to be created in cPanel before you can send emails from it, otherwise, you'd end up with the sender verification errors.