How to apply Subdivision Surface for fluent bone animation
My first suggestion is : don't apply the subdivision surface.  Leave it in the stack.  "don't apply the subsurf" is a rule people have come up with after years of watching dudes drive off that cliff.

If you must apply the subsurf, you can probably work around this problem by adding a second bone.  Call it "body" or something, and make it own the unowned vertices in the head and shoulders.

If you apply the subsurf modifier AFTER you have a body bone, it will probably create some counteracting weights to keep that shoulder from gnarling up.

You might have to ensure there's an edge at his neck that is owned by the body bone and not the arm bones.