Ejs has presumably picked an optimal value 1488= 31 * 48 an integer multiple of 48 for the total on-line byte count, and then subtracted the PPPoA overhead of 10 bytes to get the PPPoA payload which is the correct optimal IP MTU. So IP MTU = n_bytes_on_line - header_overhead = 1488 - 10, where 10 bytes = 2 + 8. There’s always that one-off final-cell trailer overhead of 8 for the CPCS, and so the last cell can only hold 40 bytes of AAL5 payload, not 48. Any more and an additional cell is required.
Another example: My own numbers are 1440 - 32 = 1408 where 1440 instead of 1488 is an integer-multiple of 48 low enough to be within the MTU of my 3G USB NIC, including protocol overheads, and 32 bytes is my PPPoEoA overhead, instead of 10 bytes. Hugely bloated is PPPoEoA. This gives me 1408, the IPv6 MTU I use now.
See also
Wikipedia on PPPoE overhead, which I wrote some years ago.
Does that make sense? I used to use this perfect MTU many years ago, perfect for one-box ATM ADSL users.
Should of course simply
ask Ejs