RFC 6598 specifies that the address range reserved for carrier-grade NAT "may be used in a manner similar to RFC 1918 private address space on routing equipment that is able to do address translation across router interfaces when the addresses are identical on two different interfaces."
Not all NAT devices support this kind of configution, but in principle, it is possible. The key is to distinguish network endpoints not only by the IP address but also by the device: if the router has two Ethernet devices, eth0 and eth1, 192.168.1.1%eth0 and 192.168.1.1%eth1 may be different endpoints and belong to different networks. It is then possible to implement NAT between these networks. It is not possible to route packets between the networks without NAT, because that would require distinct IP addresses.
I am not sure how one would configure this kind of NAT on Linux, for example, but I think it would involve selecting different routing tables based on the incoming interface.