IP does not have a concept of “public” or “private”. An address is an address, although there are various special use addresses defined in RFC’s. What makes an address “private” is community agreement not to route them, at least globally.
Just as you can use RFC1918 address blocks however you want within your own network — even spanning the globe — so can any other network, including an ISP. Most (if not all) ISPs do use “private” addresses within their own network. It’s generally frowned upon to have those blocks exposed to internet facing systems, but from time to time they are. (i.e. you should not be able to traceroute to any of those addresses.)
[Technically, you can do whatever you want with ANY address blocks. Using global addresses internally will just result in those parts of the actual internet being unreachable.]