Like many things - it depends.
When I am using instructions that are unit specific I might use the init field of the unit. But when I am applying the same instructions to whole groups or even to the whole of one side - then the init.sqs is my preferred choice. The reason is: - it is easy to see what I have done, I don't have to go round opening lots of units to see; and it is easy to change it all if I want to.
To give you an example. This is from an init.sqs:
{_x removeMagazines "HandGrenade"} forEach [Karl,Yuri,Marek,Pavel]
{if ((random 100) < 50) then {_x addMagazine "HandGrenade"}} forEach [Karl,Yuri,Marek,Pavel]
It removes all the HandGrenades from some selected people and then with a 50% probability adds one back.
If I want to change this I just go the sqs file and not the init field of each unit.