Your expression is incorrect.
"SELECT * from myDB.dbo.@[User::Table] " queryout C:\users\MSSQLSERVER\Downloads\@[User::Table].csv -c -t, -T
The SSIS expression language isn't like PowerShell where it will see the variable inside the string. Instead, we are back in the stone ages with string concatenation. You also get to deal with escaping slashes and double quotes so your final expression would look something like
"""SELECT * from myDB.dbo."
+ @[User::Table]
+ """ queryout C:\\users\\MSSQLSERVER\\Downloads\\"
+ @[User::Table]
+ ".csv -c -t, -T"
I find I have the most success when I build complex strings in Variables and then only ever reference the built Variable in an Expression on a Task versus trying to build it in there. That way I can put a breakpoint in a package or raise an Information event back with my Variable's value. Makes debugging a fiddly process a much less painful experience.