The problem you are having is to do with the way Symbolize works ...I think, specifically I am pretty sure the actual symbolized expression has to be typeset in your cell rather than referring to it via another variable. Someone else might like to explain that more elegantly.
Firstly you don't need to use strings:
Clear[x, y, var1, var2];
var1 = Table[Subscript[x, i], {i, 10}]
var2 = Table[Subscript[y, i], {i, 10}]
expr = var1*Exp[var2]^var1
Next step is to see what the problem is:
Head /@ var1
(* {Subscript, Subscript, Subscript, Subscript, Subscript, Subscript,
Subscript, Subscript, Subscript, Subscript} *)
and
AtomQ /@ var1
{False, False, False, False, False, False, False, False, False, False}
So for your subscripted variables to be "scraped" in some way from expr you need them to be recognised as symbols and as atoms. I am not 100% sure on why there is a difference -- probably something obvious I have overlooked -- but in any case consider the following:

so therefore try:

and
Union@Cases[expr1, _Symbol, \[Infinity]]
(* {E, Subscript[x, 1], Subscript[x, 10], Subscript[x, 2], Subscript[x, \
3], Subscript[x, 4], Subscript[x, 5], Subscript[x, 6], Subscript[x, \
7], Subscript[x, 8], Subscript[x, 9], Subscript[y, 1], Subscript[y, \
10], Subscript[y, 2], Subscript[y, 3], Subscript[y, 4], Subscript[y, \
5], Subscript[y, 6], Subscript[y, 7], Subscript[y, 8], Subscript[y, 9]
} *)

Edit
As per Rolfs suggestion to screen out system variables:
Union@Cases[expr1, z_Symbol /; Context[z] =!= "System`", \[Infinity]]
or alternatively if everything is in a global context only:
Union@Cases[expr1, z_Symbol /; Context[z] === "Global`", \[Infinity]]