Short answer: You can't go home early because if you don't put in the time your employer requires of you they can fire you!
Longer answer: The 40 hour work week is set forth in the Fair Labor Standards Act (FLSA). All that the FLSA says is that depending on what kind of work you do, your employer may or may not be required to compensate you for overtime. Your employer is allowed to set your work hour requirements, but if you are considered "non-exempt" from the FLSA, then if you work more than 40 hours your employer is required to provide time-and-a-half compensation for the extra hours worked. Many positions in tech are, I think, generally "exempt" from the FLSA's overtime rule (software dev types, at least--I'm less sure about ops/IT services folks) and therefore employers are not required by law to compensate software developers for overtime.
The FLSA does not address whether or not an employer can require you to work more or less or exactly 40 hours per week; it's all about what obligations they take on if you are non-exempt and they do require you to work more than 40 hours per week.
The reason? We salaried, not hourly employees, and overtime is a legally regulated thing for hourly employees. Of course, we were paid the equivalent of our hourly rate, not hourly + half, which might have had something to do with it, but working over 40 was always optional, so noone complained.
I'm not a lawyer, but that's what we were told at least.