In order to successfully move an object in Active Directory, you need to delegate the following three permissions:
1) DELETE_CHILD on the source container or DELETE on the object being moved
2) WRITE_PROP on the object being moved for two properties: RDN (name) and CN
3) CREATE_CHILD on the destination container.
When this is done the user you have delegated to actually has delete rights on the source container. Thats maybe not what you want to achive. I found that the best solution for me was to delegate the user a right to fill in text in the note field under telephone on the user. And on the Domain controller have a script that runs through all the ou’s and finds user with a specific text string in the note field and move the users to a specific OU.