I was previously having problems getting full download speeds (<100 Mbps) after 16 months of full-speed service 600-900 Mbps down from Three. I am here to report that I got my speeds back 600 to 900 Mbps down, by accidentally resetting my ZTE MC801a router to factory defaults (rather than restarting it) when I was getting really slow speeds <5 Mbps.
Prior to that, I tried *all* the APN variants, and also had PDP type set to "IPv4". I originally set IPv4 as I was having connectivity issues at the time (possibly VPN, I can't remember). Now I find that using the factory router defaults, or manually keeping three.co.uk APN with "IPv4v6" set gives me the full speeds, but without the connectivity issues I had before. Interestingly, if I manually set IPv4, I go back to the slow speeds (<100 Mbps), even though the IPv4v6 setting doesn't seem to be giving me an IPv6 IP address. Could be firmware bug, or some other issue about how the handshake is done at the mast?
I haven't played around with other manual APNs as I am afraid of "breaking" the settings again. If it isn't broken, don't fix it. I suspect some people's problems with a sudden switch to low speeds began when Three started enabling IPv6 or changing the handshake routine. The slow speeds started for me when there were reports on three's website of engineering works in my area. That lasted a few weeks, and once they were over, I didn't get my speeds back (until this recent accidental factory reset). I wonder if it may have taken a few months for the IPv4v6 handshake to be properly set up, either that, or could be a bug with the router firmware.
Anyway, posting this here in case it helps anyone.