The morality of selling Gift Certificates with expiry dates, especially in the expectation that many will not be redeemed, seems questionable to me.
As long as the agreement is clear, I don't see a problem.
From a book keeping point of view, the profit is entered as it is paid, and the liability the voucher represents is entered as a debt to the business to balance it (otherwise you would overstate your profit for that year). That liability needs to be removed from the books eventually - otherwise over ten years or so you would pile up thousands in unused vouchers on the debit side of the register! To put an expiry date on the voucher allows you to rule out the liability after a reasonable time period.