How can I restrict user access so that they can run only custom scheduled processes?

You can try creating a custom role with the Manage Scheduled Processes (FND_MANAGE_SCHEDULED_PROCESSES_PRIV) privilege to give access to the Scheduled Processes work area, along with the privileges that are automatically created when you create a job definition or job set.

Note: You need to test the custom role to make sure it doesn't have any roles or privileges that give access to predefined processes.