As of today, the subdivision surface modifier does not support vertex groups; i.e., the modifier is always applied to the whole object. There may be situations, however, where one would like to work with the subdivision workflow on parts of a mesh and leave the rest of is as is. One such case could be meshes with a lot of polygons resulting from a boolean workflow.
The following technique allows just this by using a bevel modifier and a smooth modifier applied to the same vertex group.
Limitations: The curvature of the resulting mesh is not the same as that produced by the subdivision surface modifier. Further, when increasing the level of subdivisions, one also has to increase the level of smoothing in order to retain roughly the same shape.
Step 1: Isolate the part of the mesh (e.g. using inset/outset) you want to subdivide and make sure it is all-quads.
Step 2: Add the part you want subdivided to a vertex group, make sure to leave an edge-ring around the part outside of the group.
Step 3: Add a bevel modifier, limit to the vertex group you just created, set profile to 1.0, select a number of segments corresponding to the degree of division you want, 8-20 should be OK, select width percent 40%, and, importantly, set Miter Outer to “arc” (anything else leads to edges overlapping).
Step 4: Add a smooth modifier, limit to the same vertex group, factor 1.0, and don’t be stingy with the iterations, 50-200, depending on the number of segments you have in your bevel modifier and how much your original mesh was subdivided.
Remark: Support loops work just as they do with the sub-d modifier: