During my own experiments, I had a unit encoded with the following init event handler:
init = "(_this select 0) setIdentity ""CUP_Miles"";";
The identity was not set. However, when I moved the line into a script file and changed the init event handler to
init = "[_this select 0, ""CUP_Miles""] execvm ""\path\to\script.sqf"";";
the identity was set correctly. So it would seem that the init even handler is executed before the player identity is applied.