I've seen and written a lot of background jobs in my career and in my experience, they are most common culprits to hard-to-diagnose issues in website operations. This is why, with background jobs, it's even more important than your standard component code to ensure the job executes successfully.
Here's what I see as the "ideal" Background Job in AEM:
Very true! As much as possible, getting functionality out of background jobs is beneficial.
Regarding workflows, they are nice if this is a job that requires / supports user interaction, but for workflows which are launched based on Listeners, the same problem applies with background jobs. Workflows provide some UI features, but it still requires someone to be looking. If you created a launcher workflow, creating a Health Check to monitor that workflow would still be a good idea.