I thought this problem would be solved with a new modem, but it happened again. Sometime between yesterday and today, all IPv6 packets are being dropped. The modem is still assigning us IPv6 addresses, but pings to IPv6 addresses (e.g. ipv6.google.com) always time out with no response.
Power-cycling the modem always fixes the problem, but this is still annoying.
The other problem is the tech I get on the phone claims the Comcast equipment is working correctly, when she clearly hasn't tried pinging an IPv6 address. I scheduled a tech to come out here today, so I'll have to do without IPv6 until then (because if I power cycle, it will start working and there will be nothing to diagnose).