Let's say XYZ is at 100. The 90 puts are otm, the 90 calls are itm.
If interest rates are zero, they both have the same theta. That is because they both have identical time value, and thus equally far to fall to reach zero time value by expiration.
But if interest rates are greater than zero, remember that your pricing model discounts an option by the cost of carrying that option. Since the 90 call is more expensive - and thus more expensive to carry (since you are not earning interest on the money you spent for it) - the pricing model will reduce the time value of the option by the cost of carry.
So let's say the 90 put has a value of 2. If interest rates are zero, the 90 call will have a value of 12. That breaks down into 10 (intrinsic value) plus 2 (time value). Since both the 90 call and the 90 put have the same time value - which will decay at the identical rate until expiration - their theta is equal.
But if the interest rate is > zero, then the 90 call will have a value of 10 + (2 - cost of carry). For argument's sake, let's say the cost of carry is .40. So the 90 call has a value of 11.60.
That means that the 90 put has a time value of 2, while the 90 call has a time value of 1.60.
Since the 90 call has less time value than the 90 put - and thus less far to go to reach zero - it will decay at a slower rate, and thus has a lower theta.
The higher the interest rate, the greater the difference between the theta of the 90 call and the 90 put.