According to to the issue tracker, this is bug that's been fixed since Unity 5.4.... however I having the same problem on Unity 2019.2.19f1. If I instantiate a prefab that contains a ScrollRect, I can use verticalNormalizedPosition right after the content size is set, and it works fine. But if I destroy the instance and then create a new one, verticalNormalizedPosition fails if it executes after setting the content size. It seems to me that the ScrollRect's destruction code is failing to clear some value or flag. So, the only way to make it work consistently, is to assign verticalNormalizedPosition inside a co-routine.