Running CB 2.0.9, PHP 5.5.21. CBSubs GPL 4.0.0-rc.2. I had seen this on CB 1.9.1 and written it off to a database corruption problem (
www.joomlapolis.com/forum/153-professional-member-support/226779-solved-subscriptions-for-two-plans-not-expiring
).
I have been testing CB 2, and I'm seeing the same problem. I think I understand at least the proximate cause. All of the subscriptions that are expiring have plans that are viewable public and can be seen in the front end. The two plans that are not expiring have plans that are only viewable at higher access levels and cannot be seen in the front end.
I modified cbpaidPlandMgr.php to comment out line 133:
$where[] = "a.viewaccesslevel IN " . $this->_db->safeArrayOfIntegers( Application::MyUser()->getAuthorisedViewLevels() );
The subscriptions then expire as they should. I'm no expert in your code, obviously, so I can't go any farther. But I hope this will point you to the problem. From the function you're using here, I'm reasonably certain that it's the access level of the plan and not whether it's viewable in the front-end.