It all depends on which waypoints you want the new group to follow. If you really want unit1 to join and lead grp1, ie using grp1's waypoints then you need something like:
_grp1Units = units grp1
[unit1] join grp1
_grp1Units join grpNull
_grp1Units join unit1
The way this works is that unti1 joins grp1, then each of the original members are moved out of the group and then moved back again. This will ensure that unit1 is then the leader and the original waypoints are retained. Also as mentioned above turn the radio off to stop the messages.
I see two isses with:
"[_x] join unit1" foreach units grp1
1. the use of " " to delineate code - it works for OFP but might not work later. Better to use " " for strings and { } for code to become furture ready.
2. join requires an array. Your instruction above gives it an array one element at a time - why not give it the whole array in one go?
So if you are happy that what you have does what you want I would encourage you to re-write it as:
units grp1 join unit1
Simpler?