Beginning with version 2.3.2, the diff viewer now resets its scroll position when ever SourceTree refreshes. This occurs when files are updated (per the setting in preferences), when staging or unstaging a file, hunk, or some lines, and when manually refreshing from View > Refresh or cmd+R.
This is especially problematic when staging changes one hunk at a time, as you lose your place in the diff viewer every time you stage anything. This makes the task of staging only some changes considerably more time consuming and error prone.
The bug is a near-constant headache as it occurs every time you use the diff viewer (whether staging or not, whenever the program refreshes).