Prevent compiler optimization for memory access in reflashable memory area
The problem is that the address of Reflashable_Variable might vary later in the binary due to the change in size of some other parameters


No, that's not a problem. The code generated by the compiler will change as well. This isn't optimization but automatic memory layout. 

If your program somehow dynamically shuffles around addresses of variables in run-time, then the only sane solution is: don't do that. The solution for such scenarios, where you have EEPROM/dataflash variables which might change later, is rather to allocate every such variable to a fixed, specific address. This has to be done manually by you, in some non-standard, compiler-specific way. (gcc toolchain has __attribute__((section..., other toolchains have @ 0x1234, other toolchains use #pragma etc etc.)

volatile should be used if the contents of the variable may change, due to the variable being stored in on-chip EEPROM/dataflash. So you probably want to use volatile for that reason.