I recommend to centrally create schedules for the entire deployment (i.e. weekly, daily, hourly). Once this is done, then the non-admins should be able to select the schedule upon publishing new content.
There is no way I know of to do this via code.
I know there are some BI applications that allow users to set their own schedules (decentralized scheduling). Tableau employs centralized scheduling and you can't get around that.
We haven't had any issues with this. It keeps duplicate schedules minimized for one thing. This method also allows the Server Administrator some control of resource consumption by determining when subscription schedules run vs. extract schedules.