(however, when someone further upstream does that, you will have problems too)
Can you explain this point more for me, please, because I think this maybe is the problem.
ICMP carries many kinds of information, it is not only used for ping. In this particular case, if a packet arrives to a piece of equipment for which it is too large to handle, the equipment normally fragments it. But if such packet is marked with "don't fragment", the equipment instead sends back an ICMP packet saying that the packet could not have been processed and what is its MTU. So if this happens but someone in between the two points is blocking ICMP completely, the "not to be fragmented" packet never reaches the destination and the sender never learns why.
Why this problem does not occur with hotspot users, but only with pppoe connected clients?!!
The PPPoE encapsulation occupies part of the packet so the MTU of the encapsulated packets is accordingly smaller than the MTU on the underlying physical interface. There was some issue with Mikrotik's handling of this the way described above in 6.41, but it should have been fixed in 6.41.1:
*) ppp - fixed change-mss functionality in some specific traffic (introduced in v6.41)
.
What version are you running?
Instead of
/ip firewall mangle
add action=change-mss chain=forward new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn
you may try
/ip firewall mangle
add action=change-mss chain=forward tcp-mss=1452 passthrough=yes protocol=tcp tcp-flags=syn
or even use a lower value until it starts working (because I am not sure that if the actual MTU discovery yields a lower value, the one provided by that mangle rule will be overridden).
Also, don't forget to put that mangle rule to the top of the list.