When a user changes which layers are visible/non-visible in a map, there should be an app-level setting to either save this selection for the next time the map is opened or reset to the map defaults every time (i.e. the current behavior). This data would be saved only to the device, much like the feature to return to last session's extent in Web Appbuilder. This data would ideally persist unless an irreconcilable change is made to the map's layer set but having it reset on every map update isn't a deal breaker.
Our organization has many maps with over a dozen layers by necessity and the default layer visibility isn't ideal for all workloads. This would be infinitely less work than creating and maintaining duplicate maps with different layers visible by default and would save our field crews time as well.