Whatever EngFunc_PrecacheSound or precache_sound, both call the engine call pfnPrecacheSound.
Difference is precache_sound has to be used in plugin_precache() forward. Such natives are forced to be used into this forward. Forward called at the very spawn of the server.
plugin_init/cfg is called when server is activated, much more later after the precache, but it doesn't mean you can't precache there. At this time, you sill can precache things, server just being activated.
Since, EngFunc_PrecacheSound is not forced to be used in plugin_precache(), that's why you can use it in either plugin_init or plugin_cfg.