Development has said they would change the default expiration to 0000-00-00 00:00:00, which solves the problem you mention where product-specific discounts with default settings won't work with Buy Now buttons. I had thought that change was already made, but apparently not yet, so they may just be including it in the next batch of minor updates/bugfixes that get rolled out.
You can just delete the expiration date entirely to create a discount with no expiration; when you select and load a discount created with a blank expiration field, you will find the field has been filled with an expiration of 0000-00-00 00:00:00 (meaning "no expiration").
Providing a list of codes for the same discount may be desirable if, say, a merchant wants to provide the same discount as a promotional offer to a variety of different marketing partners/outlets who would each get their own code to promote, so the merchant can tell by watching redeemed codes which marketing direction brought the most business. A merchant may also want to create a series of single-use coupons or gift certificates, but this sort of discount (using Max Use Count=1) would only work with Cart buttons rather than Buy Now buttons.
Essentially, Buy Now buttons can only use Discount Codes that are configured to work exactly the same way as Item Discounts originally worked -- a code the buyer can enter to take a flat amount off the per-unit price of a specific product without any other conditions or limitations.
Cart buttons can of course use the full range of discount configuration options, just as before; we've just added some new settings. We always recommend using E-junkie Cart buttons as the preferred "standard implementation", which provides full support for all of our features and settings. Buy Now buttons have more limited functionality and should really only be used in special cases with specific needs (e.g., if you need to prevent buyers from ordering more than one item at a time).