Roles tend to result in multiple layers of dependency. Same goes for workflows and saved searches and custom records.
If you have for example: a custom record, that has a custom field that can be pointed at that same custom record, it will bomb out.
These things can be bypassed when doing full SDF deployments - but it's painful.