It doesn't work that way. First, you need to use a "command substitution" for the seq command. Then, $X will be expanded to 1 .. $#, NOT to the values of the respective positional parameters. There are other ways:
for X in $(seq 1 $#)
do arr[X]=$1
shift
done
or
arr=($@)
which will assign elements starting from 0, or, less favoured, using the deprecated (and dangerous) eval ,
Quotes around $@ (and ${arr[@]} ) protect against word splitting and other substitutions, but still retain the list of argument members (and other array members).
In contrast, with $* and ${arr[*]} the quotes would enforce one string.