A /30 subnet is used for the two public IP addresses. Couldn't they
just route our two IP addresses over our PPP link as isolated
addresses that don't belong to any subnet? If my understanding is
correct, this would allow them to effectively amount the number of
"address couples" they can sell.
Well the way I see it is that they route 4 public IP addresses to you, and you decide whether to use them as one /30 subnet or as two /31 subnets or as 4 individual (/32) IP addresses - or even a combination of one /31 and two /32.
In other words if your ISP says they're routing the 10.0.0.0/30 subnet to you then they actually mean that they're routing the ip address range 10.0.0.0-10.0.0.3 to you.
Edit: adding an example to (hopefully) clarify further for those that do not understand.
Assume this scenario:
ISProuter (a.b.c.1) ----- (a.b.c.2) MyRouter
ISProuter has a route for x.y.z.4/30 with next-hop a.b.c.2
Then on MyRouter I have roughly 4 options:
- I configure x.y.z.5 on one of my interfaces, with a /30 subnet mask. In that case I can only use x.y.z.6 on another device (since .4 and .7 are the network and broadcast addresses in this scenario)
- I configure 4 loopback interfaces with x.y.z.4, x.y.z.5, x.y.z.6 and x.y.z.7, each with a /32 subnet mask
- I use x.y.z.4/31 and x.y.z.6/31 on 2 point-to-point links.
- I route x.y.z.4/30 to another router, and on that router I have again the same 4 options.
Note: there are also combinations possible, e.g. I could use x.y.z.4/32 on a loopback, route x.y.x.5/32 to another router, and use x.y.z.6/31 on a p2p link.
And depending on the features available on MyRouter (which could also be a load balancer, or a firewall, or...) the addresses could also be used without actually configuring them on an interface, but the result would be very similar to using them as /32's on a loopback.
A public subnet is used for the PPP link. Why is this the case? Since
these IP addresses aren't publicly routed anyway, but only used by the
two routers for the PPP link, isn't this a waste of the public address
You would need to ask the ISP, we can only guess. I guess most ISPs consider it best practice to use public IP addresses for public links. Private IP address might break stuff like PMTUD as ICMP from the 2 PPP endpoints would probably get dropped in a lot of places. But as @RonMaupin mentioned, they could have used a public /31 instead to save some address space.