QuickOPC puts together monitored items with the same subscription parameters into the same subscription automatically. This is normally an advantage, but in this case it works against you.
Unfortunately there is no direct way to achieve what you want, but there are some possible workarounds:
1) Set the Isolated property on the EasyUAClient to 'true', and use separate EasyUAClient object instances for the "groups" of monitored. This will work, but the effect is not precisely what you asked for. It will create a separate *session* for each such object, with its own set of subscription. If you have, say, two or three such sets and therefore 2-3 sessions, it would probably not be a problem, but with larger numbers, the sessions are "heavier" than just subscriptions, so it may create unwanted load on the server (and to some extent, on the client as well). I'd rather recommend option 2) below.
2) Somehow vary the parameters of the monitored items that affect the subscription - but without big influence on the actual outcome. For example, if you have 2000 items that you want to subscribe to with 500 milliseconds rate, change the code so that it will subscribe to 1000 items with 500 milliseconds rate, and another 1000 items with 499 milliseconds rate. QuickOPC will currently see this as different parameters, and will create two subscriptions.
I hope this helps.