Apologies for the wordy response, wanted to make the explanation as explicit as possible:
A call option on a bond is an option for the issuer, written by the bondholder. It gives the issuer the option to buy redeem the bonds prior to maturity. The bondholder receives payment for giving this option to the issuer, therefore Option Cost > 0.
A Put Option is an option for the bondholder, written by the issuer. It gives the bondholder the option to demand early repayment of principle at the exercise date(s). The bondholder makes a payment for having this option from the issuer, therefore Option Cost < 0.
Note these “payments” are not separate, rather they are priced into the coupon.
So these Option Cost values are both from the perspective of the bondholder and from that perspective make complete sense.
Now for this statement:
OAS = Z-Spread - Option Cost
Option Cost = Z-Spread - OAS
Remember the Z-Spread alone includes the effect of embedded options, so think what effect you’d expect embedded options to have on yields.
Callable Bond - Increase yields (compared to identical option-free bond), to compensate bondholder for the fact issuer can decide to redeem bonds prior to maturity.
Puttable Bond - Decreased yields, to “penalise” bondholder for the fact he/she can demand repayment of principle prior to maturity.
Now think about what the OAS is doing, it’s removing the effect of the embedded option
On the callable bonds OAS < Z- Spread:
The Call Option increases the yield (+ve), so when we remove the effect of this option to get the OAS, it will be less than the Z-Spread (which included that effect).
On the puttable bonds OAS > Z- spread:
The Put Option decreases the yield (-ve), so when we remove the effection of this option to get the OAS, it will be greater than the Z-Spread (which included that effect).