The difference between partial optimization(Z-matrix) and freeze the coordinates(modredundant)

Dear CCLers,
 In the partial optimization, we can use Z-matrix and specify Variables
 and Constants to do partially optimization. There is also another way
 to do this kind of "partial optimization" which is to use modredundant
 to freeze the position of an atom, bond, angle and dihedral angle.
 Except fixing the position of an atom, it seems I can perform partial
 optimization with Z-matrix for bond, angle and dihedral angle instead of using
 modredundant to freeze them. So I wander what is the differences
 between them.
 Best regards,