Conceptually speaking, I think there is a fundamental difference between what you want to achieve and the way the plot is being rendered in 3D. I'm not an expert in this area, but I will try to explain as follows.
The concept of uistack applies to 2D UI design where you have to decide which visual elements appear at what part of visual ordering because there is exactly one viewpoint. On the other hand, 3D rendering depends upon the relative ordering of the specific points in the current viewpoint. A point is hidden if there is another point closer to the observer obscuring it.
Your text box is being rendered at point (0.5,0.5,0.5) in space with default (i.e. left) horizontal alignment, as per your design. During rotation, the text is re-rendered using the same logic based on the view-point to make sure it is consistently readable. But the text is very much a visual element in the 3D space/axes.
The part of the line that you are perceiving to be crossing the text is actually in front of the text-box in 3D space and is expected to be displayed. The part that gets cut-off is the part that is behind the text-box, and hence obscured. You may be able to observe this effect more clearly using a longer string of text with centered horizontal alignment.
In order for the text to always stay in front of the plot, it will need to be outside the axes. You could use text style 'uicontrol' object and keep it on top of the visual UI stack (on top of the axes), but it would affect your ability to interact with the plot and the position of the text will not correspond to a point on the axes.