It seems okay when you have a few paid upgrades... but when you start dealing with thousands of users with paid upgrades (or even hundreds), the system starts having issues.
Not handling Canceled_Reversal payment status makes users not get the subscription they paid for in some cases (more info on that here).
Not handling overlapping subscription periods. For example say a user has a month subscription to something, and in the middle of that month, they upgrade to an annual plan. The annual plan starts then, not at the end of the existing one. In addition, I think the system might (not 100% sure on this) cancel the user upgrade when the MONTHLY one expires, basically making the user not get the annual one. This could be solved by grouping the upgrades so certain upgrades were linked to others, and then any incoming subscriptions extend the end date, rather than ignore it.
If you look at a user record in the AdminCP, there is no indicator that have an active user upgrade.
You also can't search if the user has a user upgrade. If you have 100 pages of user upgrades, the only way you can find it to know if the user has one or to manually downgrade it is to page through 100 pages and look for that username. Yeah... no. Ability to search for other things too would be nice (like transaction ID).
Using the (really) old "websites payments" system for setting up the payments is well... really old and very limited. PayPal has a fantastic NVP API (does not require pre-approval to use) that gives WAY more control... like you could tell the user if their PayPal subscription was active or not in PayPal by paying API call... you could let the user cancel the PayPal subscription from your website, etc. More info on that: http://xenforo.com/community/threads/paypal-nvp-api.22939/