OK, I think I figured it out thanks to @mducharme and these two posts:
- http://forum.mikrotik.com/t/ipv6-mtu-problems/93243/1
- http://forum.mikrotik.com/t/how-to-debug-mtu-size/116296/1
I just added that clamp-to-pmtu mangle rule to both the IPv4 and IPv6 firewalls, and it magically fixed everything. I also set the MTU and MRU in the PPP connection settings to 1492 for good measure, but it appears to work with the default (1480) as well.
So why might this have been a problem? Is it something janky with my ISP? Or a Mikrotik bug? Or possibly the fiber ONT is also manipulating MSS / MTU / MRU values even though it’s in bridge mode?
Many thanks to @mducharme for pointing me in the right direction, I never would have though to look into MTU issues for IPv6.