I'm a little fuzzy on the first one - is it assigning an anonymous array to element 0 of @choices, or is something else going on?
i think so, too. but if you don't trust yourself, go on and use Data::Dumper to find out.
i don't see a difference between these three techniques from the called funktion point of view. however, i would do this a bit different:
my $choices = [qw/one two three four/];
my $me = $mw->MatchEntry(-choices => $choices);
or did i miss some obvious reason why that wouldn't work?