The reason for the <text>…</text>
tags is to solve the issue of ambiguities that arise as a result of your mixing two languages together that are semantically identical in many cases.
If you were to specify dynamic java script logic within the Razor syntax's C# if statements, and you had java script if statements in those blocks, how would it differentiate the context between the two?
The problem is: it can't; odds are, programmers can't either. The <text>…</text>
tag is a special Razor block (inside C# blocks only) style escape that says: this is definitely (probably) not C# code that is in this block.
Things get a bit dicey when you realize you can then add another escape inside the <text>…</text>
block. Like anything though you would use it with caution. If you're having a lot of trouble mixing the two and can't figure out where to add your text blocks, odds are you shouldn't be using it (in production) until you understand it better.