PMS says about the ~ operator: ~ Equal to the specified version, except the revision part of the matching package may be greater than the revision part of the specified version which is not as it behaves in Portage (it never did, as far as I know). In Portage, any revision matches. I.e., according to PMS ~cat/foo-1.0-r2 would not match cat/foo-1.0-r1, whereas in Portage it does match.
Dupe of bug 196561.
*** This bug has been marked as a duplicate of bug 196561 ***