Because this uses a writable computed observable, selecting a terrain provider that's already selected causes the terrain to be reloaded from scratch.  Instead, if it subscribed to a normal observable, you'd get the reference equality comparison for free.