• It appears that statement_text is what is actually executed, but text contains additional parts of the batch, such as parameters, or IF statement.

    Checking your script on my own database, I see things like (to take a trivial example)

    Statement text = SELECT * FROM mytable

    text = IF (1=1) BEGIN SELECT * FROM mytable END ELSE SELECT * FROM YourTable END

    So I'd guess it only caches the plan for statement_text