How to set a recurring membership start date to be 1st of the month
Auto-recurring memberships are triggered by the corresponding recurring contribution, so what you need is:


A payment processor that supports future dates for recurring contributions.
A way to restrict which dates are allowable.


For 2., the functionality is built into the iATS Payments extension, and also in my extension here:
https://github.com/adixon/ca.civicrm.contributionrecur

I'm not sure if my implementation in that custom extension will work with Authorize and/or Stripe, but you could try it. Those processors might need a small patch for it to work.