I tend to agree with you that having multiple ":encoding" layers doesn't make a lot of sense. There may be a scenario where it does but I can't think of one right now.
The docs for perliol include this gem:
binmode() operates similarly to open(): by default the specified layers are pushed on top of the existing stack.
So that agrees with what we see, and might well make sense for non-competing layers. It does rather appear that to override a specified default encoding with binmode you will need to do the reset first.