Implementations could decide to reify values if they wish. Of course if they do so, please at least do it with a disjoint type.
The question here isn't whether they can reify values, it's whether they should be allowed to reify values in a way that creates a non-disjoint type that can be confused with other types.
Implementations are already free to reify values.