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