Create experiment builder
It would make sense to implement experiment builder, exposing thus simulation_arguments as different parameters that currently come in a form of dictionary entries. Part of such builder is to then set (and create) the experiment id.
One minor issue being that the Ensembles shouldn't not be pre-created at the same time, but rather to use EnsembleBuilder as an experiment attribute which would then build the ensemble once prepared to be run. This reflects mainly dynamic parameters, which can change between different ensemble runs; eg. a list of active_realizations.
For a reference please have a look at the comment from @lars-petter-hauge https://github.com/equinor/ert/pull/3811/files#r964512272