The carrier can inspect TTL (or hop limit in IPv6) values which decrease with every hop, so TTL at the point your packet reaches the carrier is typically lower when you are tethering.
Of course it is easy to circumvent by changing TTL on the terhered device from 64 to 65 or something like that, but I guess the solution is esoteric enough that carriers still make money doing crap like this.