If "tethering" is against the ToS, but unlimited transfer TO the phone is fine, as is unlimited transfer to/from your computer. So it seems to me that all you need to do is create a buffer program in the device itself, so not a "proxy" in technical terms. That uses a portion of the device memory to cache pages/data locally (on the phone) and the pipes them over to the phone via a secondary program. Kind of like a money launderer, takes in dirty money, and channels through other pipelines to get clean money from the other side, only the process needed is bidirectional. So really, the iPhone needs a "push" internet program that resides only in the phone, the phone acting as an intermediary, and only passes the data to the computer after "washing" it (and vice versa).
I base this on the idea that "tethering" would be defined as the phone passing computer data packets onto the internet. If the packets never show anything other than iPhone data markers, there would be no way for ATT to determine that the packets are being "washed" and converted.
Perhaps, this is the better method, simply add in the function of rewriting the packet "fingerprint" to match that of the iPhone through the proxy program.