autofac や Caliburn については不明ですが (まだ適用される可能性があります)、Unity コンテナーに関しては、次の場合にのみ ViewModel を登録します...
コンテナを廃棄する際に廃棄してもらう必要があります。新しく作成された (シングルトンではない) ビュー モデル インスタンスを格納するライフタイム マネージャーを作成できます。
container.RegisterType<MyViewModel>(new DisposeableInstanceLifetimeManager());
...
container.Resolve<MyViewModel>(); // here all dependencies will get injected
...
container.Dispose();
データを共有したい場合は、サブ (子) コンテナーを作成してモデルをシングルトンとして登録し、複数のビュー モデルで同じモデルを共有する傾向があります。
var child = container.CreateChildContainer();
child.RegisterInstance(model, new ContainerControlledLifetimeManager());
child.Resolve<MyViewModel1>();
child.Resolve<MyViewModel2>(); // both can share the model instance
Resolve
(注: Unityでは、コンテナに登録されていなくても、ViewModel で使用するとすべての依存関係が注入されます)。
それ以外の場合は、シングルトン ViewModel が必要でない限り (それがいつ役立つかはわかりませんが)、ViewModel をコンテナーに追加しても、コードが追加されるだけで何のメリットもありません。