Suppose an RCP application has 2 versions of the same feature (suppose 2.0.0 was installed and is the one currently in effect, with v1.0.0 still present but only included in a previous profile):

- test.feature.feature.group 1.0.0
- test.feature.feature.group 2.0.0

On startup, the application somehow decides a downgrade is needed (specifically an HTTP GET from a well-known URL returns a special value) and that test.feature.feature.group 2.0.0 must this be removed . So far so good.

I'm suprised by your description since this code is used by the p2 UI when performing the uninstallation. I quickly looked at the UninstallOperation code and the IU being uninstalled is the IU being passed as a parameter.

If you can provide a simple setup to reproduce this, then we can further investigate.
Otherwise, make sure that the ID's and versions being passed in are the right ones and that the profiles do include the version of the IUs you intend.