The maintain and contribute roles are very similar.
The maintain role is allowed to change tool permissions and add site participants and create new sites (so long as they are a member of an Administration Site) but otherwise the roles are almost identical. The contribute role is meant for staff members who are expected to author content, modify forum discussions, make announcements and the like but who are not actually site maintainers.
The access role is for student-type access, if ‘students’ are required to author content or moderate Forum discussions then the permissions for the access role should be modified in the tool itself.
In general students should never be given the contribute role.