We continue to have this problem. I'm not sure entirely when it started, but it may have been with the original upgrade to 2.9. We're currently on 2.9.1.1 and I can reliably reproduce the problem both in our production environment as well as in 2.9.2 (in test).
We're using a subdomain-based setup, with <blogname>.blog.<domain> as the base page for all blogs. I can get all "missed schedule" posts to post on a given blog by manually navigating to <blogname>.blog.<domain>/wp-cron.php.
Changing the timeout in cron.php, and/or turning on WP_ALTERNATE_CRON doesn't seem to change the problem.
Thoughts? It seems many things that are resolving this issue for people don't work in our setup for some reason...