What you need to appreciate is the order that things are done in MATLAB. When you type
sym(2^2000)
MATLAB looks at this, and FIRST, evaluates 2^2000. What is that? inf. Both 2 and 2000 are doubles. So 2^2000 is a double. Oh yeah. It is inf. So what? Still a double.
Then, and only then, does MATLAB decide what to do with this result. Oh, yes, pass it to sym. What is sym(inf)? I'll give you two guesses, and be disappointed if you need more than one. :)
The point is, you need to remember how MATLAB operates. SYM cannot look inside an expression, and decide that since I'll be making this result symbolic, then I should create the intermediate result as a sym before I ever compute that intermediate result.
How can you fix this? It is simple enough. Force MATLAB to do this in symbolic form, from the beginning.
sym(2)^2000
ans =
114813069527425452423283320117768198402231770208869520047764273682576626139237031385665948631650626991844596463898746277344711896086305533142593135616665318539129989145312280000688779148240044871428926990063486244781615463646388363947317026040466353970904996558162398808944629605623311649536164221970332681344168908984458505602379484807914058900934776500429002716706625830522008132236281291761267883317206598995396418127021779858404042159853183251540889433902091920554957783589672039160081957216630582755380425583726015528348786419432054508915275783882625175435528800822842770817965453762184851149029376
So, by telling MATLAB that one of the operands was symbolic, it knows to compute the result in symbolic form.