I would expect this exactly works like you describe it should.
When you set up from scratch on trunk a scenario to reproduce this, maybe we have a chance to isolate the cause for the problem you see.
What works for me so far on the trunk with jetty:
- adding the project
- adding a test-user with access to the project
- adding custom status 350
- creating an issue as admin, assigning test-user
- changing status to 350 by test-user, re-assign issue
keep in mind, there are permissions 'Unassign Issues from Self', 'Assign Issues to Others', 'Full Issue Edit' which might also affect your problem.