Variables are the interface between the device driver and the other components of the software, specially the user interface. Each variable acts as an end point for a parameter message. It may receive messages -- which causes the driver to set this parameter at the physical device -- but also may send it's parameter message in order to tell the user interface about the actual setting of this parameter.
Inside, a variable separately stores two values: The value which recently has been commanded and the value which has been read from the device during the previous polling cycle. By managing these values separately, the device driver is able to check if a value has properly been set by the device. If you see messages like 'Parameter some.name set to X but reads Y' in the event log, then the parameter polling which followed a command returned a value different from the commanded one.