Personally, I find this really intriguing and think it would be much better for data security because it would be far less likely that they will have my customers’ email addresses lying around their database months or years after I cancelled the service.
I assume the difference would be that having your database exposed presents additional surface area for attacks. A rube-goldberg style setup probably presents its own risks, but personally I just use AWS SES for my transactional/marketing emails and it's a one-way pipe that doesn't present any significant risks as far as I can see.
The top thing that comes to mind is creating a separate ‘read replica’ DB that logically replicates target table(s) from the source DB, creates a materialized view with a subset of the replicated data in the replica db, and then exposes only the materialized view to a specific 3rd party user.
That way you:
1) Run your primary db in a private subnet — addressing your concern with ip whitelisting
2) Run the replica in a public subnet with extremely limited access(ip-whitelisting and limited access controls to data).
This is definitely a more complex setup to reason about and creates more moving parts that can fall out of sync, but it does greatly decrease the blast radius of a breach, and for some orgs, that may be a worthwhile trade-off. In my opinion, the OP would probably benefit from some basic security walkthroughs on these different implementations to help engineering teams get onboarded/make a better case for their solution if they hit friction with legal or security teams.
Your private IP database isn’t unhackable either. A simple phishing attack can probably get someone’s VPN creds a nonzero percentage of the time.
So again, I'm not saying you're wrong in that this might be a bad security practice, but OP is not alone in taking this approach and many SaaS vendors are seeing success and getting users because of it. So OP is going down a trodden path.