Insert terms for custom taxonomy on plugin activation, or each page load (init hook)

50 is relatively not much, and you should create them on the plugin activation hook.

For more then 100 (just pulled the number out of my ass 😉 do your own testing on some slow shared hosting) I would create a settings page and initialize the DB from there. The reason is that users do not expect plugin activation to take long and might think that something is wrong, but there is no way to have a kind of “this might take a minute” message at activation time.

Whatever you are deciding to do, don’t do it on the init hook as it is used by front end, do it only on hooks that are related to admin.