This is a tough one for me to help you without access to your site/server. I haven’t changed anything with the CRON functions for a very long time, and I have not had any reports from others about similar issues, so I don’t believe it’s a code issue. This is most likely something specific to your server and install.
Have you checked with anyone to see if the reminders are actually getting sent or not? Or create a test event and sign up yourself to see if you get any reminders yourself?
My guess is that somehow the way you have set things up, the CRON job/function is not getting triggered properly, especially if in addition to no reminders being sent you also are not getting expired signups cleared. Reminder emails, Reschedule emails, and the purging of expired signups, are all triggered off of one function that should get called anytime that CRON hook is triggered.
The first place I would check is your server’s PHP error log to see if something is throwing errors when the WordPress CRON function is triggered. It’s possible some other plugin’s CRON functions are causing a fatal error, thus preventing further execution of any other CRON functions from other plugins. If you don’t see anything there, you may want to temporarily configure the WordPress debug function and set it to debug to a log file (NOT to the screen), and see if you see any errors or warnings in there when the CRON function gets triggered.
Also, the Action Scheduler is not part of WordPress core, and is usually installed by other plugins (such as WooCommerce). Action Scheduler is set up in a way that it should use the newest version if there are multiple versions of it installed (via different plugins). Unless you absolutely need it installed as a stand alone plugin, I would uninstall that plugin and let WooCommerce or the other plugins keep it updated. Sometimes a job fails due to errors in the code for the job or because a function took too much time and it timed out before it could finish. That doesn’t mean that there is something wrong with Action Scheduler and that you should install it separately. Note that I do NOT use the Action Scheduler in any of my plugins. But, if something that uses Action Scheduler is causing fatal errors or timeout errors, that could possibly affect the CRON jobs since I believe it works off the same CRON hooks.
The CRON hook for my plugin is set up during activation. So, you could try to deactivate the plugin and then reactivate it, and that should check if the hook is registered, and, if not, it will set it up again. You say that you see it in the CRON hook list, but it’s worth a try to see if that helps at all. As far as database entries, things like the last reminders sent data are stored in the default wordpress options table. Just search for entries that start with ‘pta_sus_’ for the option key, and you’ll find a few. The reminders sent option is only updated when any reminders are sent, and they are only counted as being sent if the email function returns a true value. If you have replaced the WordPress mail function with a SMTP plugin, then that plugin also needs to return a true value when an email is sent, or else my plugin will think it wasn’t sent and it won’t update the sent count. I don’t think that’s your issue, though.
Doing some quick searching, I see that in the past some people have had issues with CRON jobs from various plugins not working correctly when they disable the WordPress CRON and then use a “real cron’ server setup to trigger wp-cron.php. Even though everything looks fine when you see the scheduled CRON jobs, it seems that calling wp-cron.php directly that way may not ensure that all plugins are initialized properly in time for their CRON hooks to be registered and to fire properly. I would suggest that you re-enable the WordPress CRON function and remove the server side real CRON call to wp-cron, and see if that fixes that issue. If your site gets enough traffic (even if it’s search engines or bots crawling your site), the CRON jobs will get checked every time WordPress is loaded, so there would be no need for a “real cron” job if your site is getting hits at least once every 15 minutes.