If plain Perl objects and plain Moose objects don't cause this problem, could you clarify further what you are trying to pinpoint. What makes you unsure that this isn't an issue with MooseX::Declare and whatever magic it is conjuring up?
It would seem to me that newer add-on packages like MooseX::Declare have a responsibility to work cleanly with core packages like Data::Dumper, as well as any non-core packages they extend (i.e. Moose). This is all the more so with something like MooseX::Declare which claims to be a safer way of doing the kinds of things people once tried to do with source filters.