Flow Variables would be defined and used inside a Web Flow, this means, the visibility of this variable is only inside the same web flow, in the Interface Layer, and when needed outside, it is passed as a parameter to, for example, an user action or component. I believe this will allow a better isolation between Interface and Business Logic, which can be shared (public) with others applications, while maintaining the flexibility to use on different pages of the same web flow, and also eliminate the need to worry about the session variable name defined for different web flow, it could be the same.
Actually, the platform will control and stored Flow Variable in the session, but with a distinct "real" name, and limit your visibility to a flow scope.