I agree material indices are not that intuitive and I think two suggestions above would make significant improvements.
The first is that you can assign materials directly to selected faces and Blender creates the appropriate group.
The second is that you can name these groups so that you can select them easily and know what they represent at a glance or just have a mode where you can see them visually.
The vertex groups seem to be setup a bit better although there are improvements that can be made there too.
Having vertex group names match armature bone names makes a lot of sense as you can drop in another armature with the same bone names and have it deform with the same groups. But, the vertex group panel doesn’t really need to exist either.
Same with the shape keys. Why aren’t these all one and the same thing?
They are all groups of vertices with 3 different properties (materials, keyframes and bone weights).
So let’s for example assume there is a vertex group mode. When you enter this mode and you hover over the mesh, it highlights the groups. If a vertex is part of multiple groups, there can be a list and you can choose to view only material groups, armature groups or keyed groups - maybe even generic groups to allow you to UV map complex meshes easier.
To assign materials, you just go into edit mode, select faces and assign a material by going to the material scroll box (in 2.5), right-click and assign. To edit the group, go into vertex group mode and say you assigned a material to the face, when you hover over the face, it highlights that group. When you click to select it, it becomes the active group and there could be a brush to add/removes verts from that group - if they are removed, they become part of the closest vertex group or none if there are no others.
To deal with armatures, the weight paint mode already works very well. Although you wouldn’t need to manually put the armature into pose mode - what’s that all about? When in weight paint mode, you select the bone and paint your group of associated verts and just as it does now, it would auto-create the groups and maintain the link if you decide to rename a bone. Go into vertex group mode for complete assignment or removal of verts using a brush. If for whatever reason you need to move a group to another bone, that can be an easy option (e.g select group, hit m and select new bone)
To deal with shape keys, you would store a base key. Then you’d move various verts and create a number of shape keys. Blender would automatically setup groups for these shape keys based on the verts that had moved from the base key. You then go into group mode, select a group to make it active and set a keyframe using I > insert keyframe at the specified frame. This way you get an idea of which shape keys do what.
For times you need to visualize the groups as a list, the outliner is there and is very well setup for it. You should simply be able to select an auto-created material, bone or shape group and rename it or delete it in the outliner.
There will probably be scenarios the above setup won’t address but I’m all for moving towards more visual (‘artistic’) ways of linking data instead of copious amounts of squashed interface panels.