Use job compute for everything that runs on a schedule
This is the biggest dial and also the easiest one. All-purpose compute on the Premium tier consumes 0.55 DBCU per DBU hour, job compute on that same tier 0.30. So the same workload on job compute is roughly 45 percent cheaper, without changing a line of your code.
The reason this still goes wrong is convenience: you develop in a notebook on an all-purpose cluster and then set that cluster as the target on your job. Make it a hard rule that scheduled work runs on job compute and that all-purpose is for interactive work only.

