That is true that one should not do this, but little bit more explanation is required as to “why”.
Doing such kind of assignment temporarily overwrites High array with your data. Normally, as @mradtke wrote, you do NOT want to do this. It will have disastrous consequences (all indicator calculations wrong) if you do this without knowing what you are doing. Sometimes though it can be used to calculate some indicator based on data different than current symbol OHLC. For example if you wanted to calculate ADX or any other function that makes implicit use of OHLC and feed it with data other than your current symbol data then you could use ability to overwrite OHLC arrays. That is in fact what SetForeign does. It should be added that this assignment operates on private copy of OHLC data that current execution of your formula uses and does NOT affect other thread and does NOT affect the data in the database.