The contract says "up to" whatever because an ISP can't make any claims about how fast your link to any and all websites will be, once the traffic leaves their network.

Let's imagine for a moment a very simple case. A network with nodes A, B, C, D and E

A <-> B <-> C <-> D <-> E

Now let's suppose that (A,B) has a 1Gbps link. And (B,C) has a 10 Gbps link. And (C,D) has a 10Mbps link. Finally (D, E) also has a 1Gbps link. What is your ability at A to receive data from E?

It's the minimum bandwidth of all the links that limits your rate. So clearly we can see that the available bandwidth from (A,E) is 10Mbps because that's the limiting factor.

Let's suppose that my ISP consists of just the link (A,B) and they advertise speeds up to 1Gbps. And then let's assume that I can't (at node A) download from node E as fast as I'd like. The problem is that the ISP doesn't have any meaningful control over the link (C,D) because their network only covers the link (A,B). That's the reason that ISPs advertise "up to" a particular speed, because they have no control over what happens once you leave their network.

Now let's suppose that the ISP actually covers A, B and C. In other words they have both a consumer facing link, (A,B) which is the cable modem to POP link. And they have a back-haul link, which is (B,C) to their peering station, which is at node C. Node D is on the backbone providers network and is the other end of the peering arrangement from the ISP to the backbone provider. E is just about anyone else on the backbone network, perhaps Netflix.

In this case the ISP does have some sort of control over the bottleneck link. They can't unilaterally upgrade it like they could (A,B) or (B,C) but with the cooperation of D the 10Mbps link could get upgraded thus providing better (A,E) service to me. Ostensibly when I purchase 25/5 service I am paying to get 25/5 all the way up until the ISP doesn't have control over the network anymore. But here the ISP has DELIBERATELY bottlenecked me ON THEIR OWN NETWORK by refusing to upgrade their half of the (C,D) link.

I am 100% sympathetic to the idea that ISPs don't have any control once traffic leaves their network and thus the 25/5 isn't a guarantee. But the idea that they won't make a good-faith effort to provide 25/5 transit across their own network to a backbone provider but still advertise "up to" 25/5 to me as a customer is completely reprehensible.

If you don't have to make a good-faith effort to provide the 25/5 then why not advertise "up to" 1Gbps or 100Gbps? Customers are never going to see those kinds of speeds but by the logic that "up to" language absolves them of any and all responsibility to actually provide it, why not advertise it?

The reason is that they would get sued for fraud. They have no reasonable ability to claim the 1Gbps number over a link that can never ever get close to 1Gbps, either cable or DSL. What's the difference if they move the bottleneck a single link or two away but still inside the ISPs own network? As far as I can tell it just makes it harder for customers to figure out and thus less likely that they will get caught. The fact that it's confusing and many people don't know how networks work doesn't make it not fraudulent. It just means that it's highly unlikely that enough people will figure it out and start a class-action suit.