The cuckoo mechanism is done, and it works! Below is a description of each of the printed pieces and a video of the mechanism in action.
The main pieces are the four racks and the motor carriage. The racks provide a linear channel for the pinions to crawl along. The motors are mounted into the carriage with the four pinions on the two motor shafts.
The four racks are mounted together with the backstops facing outwards. This serves to contain the pinions so they're incapable of derailing.
The carriage with the two motors mounted.
The 3D printed parts and motors assembled.
The entire assembly. I used a wooden dowel that I had on hand to hold the Chestburster and fit into the carriage.
Above is a demo video of the Chestburster actuating. I'm controlling it with an L9110s motor controller to get the required bidirectional motion. Mounted limit switches are visible on top of the assembly glued on the top racks. These currently aren't wired to anything but would serve as a way for the Arduino to detect that the end of travel has been reached so it knows to stop sending current to the motors. Right now, however, I'm just using delays to run the motor approximately long enough to hit the end stops.
I'm considering keeping the setup like this and not using the limit switches at all. The travel distance is so short, and the time it will be running is so infrequent, that I think the simplicity of not having to use the limit switches would be worth the slight increase in the wear-and-tear on the motors due to stalling out. Another reason I'm considering this is because the limit switches may not match up perfectly with end of travel. Something I didn't address in my mechanism was the mechanical linkage of the two motors. Because they're not directly coupled, it's possible for one motor to operate slower than the other, thereby causing the carriage to misalign and one motor be closer than the limit to the other. Applying current when one motor is at the end of travel limit would cause the faster motor to stall, but would give the slower motor a chance to catch up and resynchronize.