Você pode fazer assim (não testado):
for file in 'ls --sort=size /path/to/x/*'; do mv $file /path/to/y/; done
Você pode inverter a classificação adicionando o parâmetro --reverse a ls. Se os nomes dos arquivos contiverem espaços, talvez seja necessário citar $ file:
... mv "$file" /path/to/y/ ...
Se os nomes dos arquivos contiverem aspas duplas, você estará com problemas reais.
Também é possível que o seguinte funcione, mas depende da implementação de mv e também pode não funcionar para muitos arquivos (e ainda tem problemas com espaços e / ou aspas em nomes de arquivos):
mv 'ls --sort=size /path/to/x/*' /path/to/y/
Você pergunta: "existe uma razão para não fazer isso?" A questão deve ser revertida. Existe uma razão para fazer isso? Se você tem um motivo, vá em frente e faça.