The technical reason why is because when visiting a website, the web browser has to translate the website name (aka domain name) into a number it can use to connect to; this is akin to looking up a person in your phone contacts and the phone calling the number. This is the part the ISP sees.
The actual web request would be invisible over HTTPS because as far as the ISP sees, it is a random collection of letters, numbers, and symbols (ie encryption). Only you and the web server know how to decode the information.
The web server sees a request for https://www.example.com/foo/bar?baz=bam as the following:
GET /foo/bar?baz=bam HTTP/1.1
Host: www.example.com