This seems a little short-sighted to me. It's noted that the company doesn't make the offer until they've had the candidate go through on-site interviews. It's not like they are making an offer on initial meeting. If both parties are interested, this should be acceptable.
Look at it from another perspective. The hiring manager has an open position to fill. They want to fill it with someone who wants to work with them. They can't leave a job offer on the table for a long period of time, just to have the candidate say no. Having that offer outstanding prevents them from making an offer to other potentially qualified (and more eager) candidates. An interested candidate should have no problem with a decision at this point in the interview process.
If the job offer is pulled because it is expired, and the candidate is really interested in the job, they should be able to get another offer if the position hasn't been filled by the time they got off the fence.
Look at it from another perspective. The hiring manager has an open position to fill. They want to fill it with someone who wants to work with them. They can't leave a job offer on the table for a long period of time, just to have the candidate say no. Having that offer outstanding prevents them from making an offer to other potentially qualified (and more eager) candidates. An interested candidate should have no problem with a decision at this point in the interview process.
If the job offer is pulled because it is expired, and the candidate is really interested in the job, they should be able to get another offer if the position hasn't been filled by the time they got off the fence.