Currently the Map Viewer provides a useful option to hide layers in legends. However, toggling that setting in Map Viewer does not remove the layer from being toggled in a layer list in derivative applications.
There are cases where it would be helpful to have a layer as a part of the map that is both excluded from the legend and a layer list in derivative applications. The blend modes functionality provides a useful example. Say I create a Sketch layer and draw a circle around an area of interest. I can use blend modes on the Sketch layer to mask, for example, the basemap so only the area in the circle is visible (See animation below).

In this case, for derivative applications, I would not want users to be able to toggle the Context Mask layer off. However, when I use this map in the Basic Instant App, Context Mask is among the togglable layers in exposed by the LayerList widget.

Examining the ArcGIS Maps SDK for JavaScript documentation, I found that there is a listMode property on the Layer class that enables you to set at the individual layer level if a layer should be shown in a LayerList.
I do suspect that since the LayerList widget is used as the layer toggling interface in the MapViewer that it is not so simple as exposing the listMode property in the layer properties UI. However, it would be helpful to be able to store a list of layers in the JSON the MapViewer generates that should be hidden in derivative applications. I also recognize there would be downstream impacts in InstantApps and other places. Finally, I know that the simple presence of the listMode property on each layer means I can achieve my suggestion here with a custom application. I may just do that! I'm just suggesting it would be helpful to have the same level of control over what layers appear in layer lists as what appears in legends.