As best I can tell, it allows >8k only when it is a constant:
exec sp_executesql N' bla..
bla...
...out to 20k' --<--end quote
I have executed more than 8k with EXEC as in:
EXEC ( @var1 + @var2 + @var3)
I have also BCP'd image/text fields out to text OS files and submitted them with OSQL...