Some deform modifiers (like armature) use passed Mesh parameter to retrieve some extra data (vgroups in our case), and default to obdata when it is not available. This should be fine in theory in the 'apply modifier to obdata' case, since this is always the first modifier, but here upper-level code passes **evaluated** object, not orig one, so ob->data is not orig anymore, and might miss some stuff... Note that am quiet unsure whether the way evaluated data is passed around in that apply modifier operator code is actually OK, but for now it seems to work at least...