I don't have an answer to "why", but I do have a simpler test case
$ touch foo001
$ perl -de 1
...
DB<1> p <foo{[0-9]*}>
foo001
DB<2> p <foo{*[0-9]}>
DB<3> q
$ perl -v
This is perl, v5.8.8 built for amd64-freebsd
(with 1 registered patch, see perl -V for more detail)