Christopher, I believe phillbooth is pushing the custom fields because it is the easiest way to achieve the functionality you seek. I sense your reluctance is partly you not fully grasping the power of custom fields and partly intuitively knowing custom fields is a bit too clunky for your client. For this application, I agree custom fields is a bit clunky, even if it is easy to implement.
Unfortunately, your idea of choosing an applicable role during the actual upload, while a good one, may be difficult to implement, as the media uploader is fairly new, and we're still figuring out how to hack it.
One thing that would be useful to know is what media are we really talking about? In another place you mention documents. If the upload process is more about selecting files to upload and less about seeing images and entering caption and other meta, I have another idea.
Take a step back from custom fields and develop a custom meta box instead. While custom fields are basically text fields, meta boxes can be any html content, including pull downs, check boxes, etc. I can see a meta box that looks very much like what phillbooth is suggesting, except next to each role's text field is an upload button. The button could launch a multi-file upload dialog, the results after the upload process are stored in a comma delimited list in the text field.
Instead of selecting a role when the file is uploaded, upload all files for a role at one time. Then do the same for the next role. Will this work for your client?
Then when displaying the sidebar, script retrieves the file list associated with the current user's role and builds a link list to each file. This will take more coding than phillbooth's approach, which was almost none. But it should be more intuitive for your client.
While the primary process is straight forward, adding complete usability will be a project. Such as the ability to delete, modify, or reassign the files that were initially uploaded. These can be incrementally implemented as needed.