package--ensure-init-file inserts (package-initialize) into the user's init file, but it does not also insert (setq package-enable-at-startup nil), which means that (according to (emacs) Package Installation) Emacs will re-initialize the packages post-init: > In some circumstances, you may want to load packages explicitly in > your init file (usually because some other code in your init file > depends on a package). In that case, your init file should call the > function ‘package-initialize’. It is up to you to ensure that > relevant user options, such as ‘package-load-list’ (see below), are > set up prior to the ‘package-initialize’ call. You should also set > ‘package-enable-at-startup’ to ‘nil’, to avoid loading the packages > again after processing the init file.