the specific trouble case that encouraged this change is when you nest nav hosts and have multi-level navigation. An ambient only gives access to the most local value provided, so code that expects to be in the scope of an outer nav host and have access to the associated outer destinations would not find the correct controller.