Since residential connects are over subscribed anyway, it is trivial to make users throttle during peak demand based on their current/historical usage.
If you use Cloudflare's costs and peering:transit ration from 2014 (which is almost certainly cheaper now); 1Mbps/month costs $8. [1]
1 Mbps/month is ~329GBytes. A 1TB data cap would be just ~3.1 Mbps/month costing $24.8.
I'd estimate that a last mile ISP could probably get an effective rate of half or less since connecting to end users/consumers is an advantage. And in a lot of cases, the same ISP offering residential service is also selling transit to other networks so in a way the data is already paid for by the time it reaches your local ISP.
[1] https://blog.cloudflare.com/the-relative-cost-of-bandwidth-a...
Revenue is easy: how much did you take in for video? phone? Internet access?
Costs are harder because you can only include business line direct costs. Since the cable plant is used by voice, video and data services it's not a direct cost of any of them. Same thing with the service vehicle fleet, call centers, etc. Most things get saddled in "administration" categories and obscure the true cost of providing the service. As a company overall, their margins been hovering around 8-12%.
Do you have a source stating otherwise?
Like 40% of the segment cost is "programming" (TV), so the internet part of the service likely has even better operating margin than the segment overall (basically, slightly higher revenue than TV with considerably lower costs).
If the network is more heavily used, it will require more capacity where it connects to other parts of the network or other networks. More ports and more wires means more failures of ports and wires and more diagnosis of ports and wires and more replacement of ports and wires.
Or, if capacity is not increased to meet demand, you need more people at the callcenter to ignore customer complaints.
If it's underutilized, you can save money by delaying replacement.
Let's keep things simple and say in one interconnect you'e got 4x 10G ports. If your utilization peaks at 5 Gbps, you way overbuilt that connection, but if one port breaks, you don't need to fix it until another port breaks; you can wait until three out of four ports are broken if you feel lucky. That delays hardware replacement and eliminates service trips and probably reduces technician time. If that connection peaks at 35 Gbps, you should fix any issues ASAP. (And start planning for capacity increases).
Of course, if the connection is to another network, they may bill for usage too; although I'm pretty sure US dominant ISPs are not paying for usage on most of their connections.