If you're referring to pushes within Go Daddy to another customer you cannot do them starting on the day a domain expires. You need to renew it first in your own account and then you can push. If you refer to transferring a name to another registrar you CAN transfer it out on or after expiration date, as long as you unlocked it BEFORE exp date and you requested (and hopefully received) its auth code, if you try either action on or after exp date GD will deny them, and the name needs to be renewed with GD (and a new registrar lock also gets triggered, ie you need to wait another 60 days to move it out, as any changes cause this registrar lock even when the registrant stays the same)
If you did unlock the domain before exp date and you got its auth code, you can transfer it out, they won't deny it, unless GD just changed this recently. But you're also right about deeply expired domains. Even if you unlocked the name and got its auth code before it expired you cannot wait the entire 17 days to transfer it out, I don't know the limit but do the transfer out asap, you'll get 7-10 days maybe ? or even less...... I'd be really surprised if a name could be moved out of GD on the 17th day after expiration for example, it's too risky (you can ask but I'm not sure you'll get the correct answer, that's Go Daddy lol...)
For names that are beyond 17 days after exp date that's the recovery you mention (redemption) and there's no way a name can be transferred out after those 17 days (grace period) are over. You need to pay the $80 penalty first to even rescue the name and be able to renew it with Go Daddy. And if you wait too long (like near the end of the 42-day period after exp date) to redeem the domain, then the fine goes up to $95, what GD calls Registry Redemption. I'm not sure if this is in the Help section on GD, and if it is take it with a grain of salt, it may or may not be accurate...