
In the absence of anything else, I'm thinking that your modem is doing deep inspection on the PPPoE packets and is setting the MSS on the encapsulated TCP packets according to the current PPP parameters. In that case the "bad" modems aren't doing this (I would call them "good" modems because I don't want something to screw with my packets, but that's just me :)
I guess that's possible, but it seems so unlikely to me.. These are just consumer-grade ADSL modems, and not even particularly high-end ones at that. Reconstructing the tcp streams inside the pppoe streams inbetween the ISP and the linux server and then putting it all back together sounds beyond their means to me.
It's nowhere near that difficult. The PPPoE header is just 8 bytes. Behind that is IP and then TCP. If the TCP header happens to have the SYN flag set then change the MSS as required. (I think you only need to fiddle with the SYN packets but can't remember for sure). It doesn't need to do any sort of connection tracking or reassembly. James