Calculating bounds is an expensive operation that causes a fair bit of GC allocation (due to GetComponentsInChildren), and because of this I don't perform this logic at run-time. Only edit time. If you are modifying something at run-time in your game, it's up to you to notify the scroll view that the bounds have changed (via UIScrollView.UpdateScrollbars(true)).