When using the rp-pppoe plugin and pppoe, the fragments used are tiny (8 bytes of ppp data), and consequently the link behaves really really poorly. The correct behaviour is that MLPPP fragments should be (packet size) / (number of links), but less than MTU. When using /usr/sbin/pppoe, it works fine.
Looking through the kernel code, the only way I can see that this would happen is if rp-pppoe didn't correctly pass through the MTU and instead passed it through as zero. A zero MTU would cause the above behaviour. A quick look at rp-pppoe hasn't told me anything useful though.