Just to follow up, all the problems I reported turned out to be my problems. So no reason I know of not to try out the physicals behaviors.
So my favorite of the options is
(1) Add a transform behavior to the ears layer, so you can adjust the opacity of the ears without affecting the rest of the puppet.
(2) Record a zero opacity for the ears that time you want them to fall off.
(3) Create a separate puppet for just the ears and trim it to start at the same time the opacity goes to zero.
(4) On the second puppet add the "Dynamic" and "Collision" tags with "Start Immediately" - the ears should just fall to the ground at that time.
The only thing to watch for that is confusing is the physics behaviors cannot be scrubbed like other things - they just start and keep going even if the playhead is not moving. Sometimes you need to hit the "reset" button in the scene (the two "recycling" arrows in a circle) to reset the physics back to the start. When you do a final render it is reliable and correct, but during editing (for speed reasons I think) the physics just play ignoring the scrubbing and editing settings.
What I finally ended up doing was duplicate the ears layers ( so I have two sets of layers that are identical) and then I swapped the layers using the swap layers trigger, so I had the ears on the head as the default and then swapped layers with a key trigger that had a physics behavior applied to that layer of ears. It worked.
Thanks for all your help, you gave me a couple ideas that helped me resolve it.