You can use either syntax, so if you think
alias { push(@x, $y) } is clearer, use that. (I'm personally a fan of sparse use of parens and braces, but maybe that's just my strange taste). Note however indeed that if you try to do my-declarations, you can run into trouble...
alias { my $x = $y } would do nothing useful, since the scope of $x is limited to the block.
On a side note, the lexer hack is actually to make alias { .. } work. alias LIST is the normal mode of operation.