What are the benefit in adding hook in the init() hook?

Sometimes you want to run some code before deciding to add an action, or a filter. This may involve checking the user’s permissions, checking the type of page request, checking whether another plugin is active etc.

Some of those checks may not be possible until some way through WordPress’ execution – so it’s reasonably common to do that work in an init hook, rather than on plugin inclusion.

Doing everything like this means that your “initialisation” is all in one place, even if some of your actions don’t require it.