WP-Cron runs on page loads. On low-traffic sites jobs may not run at all; on high-traffic sites a single request can run many jobs and stall the page.
Action Scheduler (used by WooCommerce, Jetpack, and others) stores jobs in custom tables and processes them in batches via WP-Cron or a dedicated worker.
For anything that does real work — sending newsletters, syncing inventory, generating reports — install Action Scheduler and migrate the job out of WP-Cron.