There are global and private variables as well as array/hash/python options. However, I believe it would make sense to have Layout-specific variables as well. Too often I find myself using variables that pertain to the current layout only.
These variables could be set to "persist" - remember the value after layout is closed - or "forget" - reset to the default value after the layout is closed.
These variables would be accessible through Layout properties as well as system expressions. Perhaps local('variable') just like global('variable')?
Should the need to retrieve other layouts' variables arise, I suppose that could be done by adding another expression: get layout variable(layout, variable) or something.
I reckon this would be of great help. I feel such a layout-specific variable is the missing link between global and object variables.