When a $let variable is assigned to a FillEmpty expression around a global value, the lifetime tracker correctly assumes that the result of the expression could be a local value, and any usage of that variable is treated as an unsafe reference. This leads to extra copying of data values at runtime, and a performance degradation.
When the alternative value is a shallow type (e.g. Null, an integer,...) the data is safe and we can treat it as a global value