Something I'd not done with the edit form was replace [new1] with [{{variant.id}}] for the variant inputs. As I said, the form was saving correctly anyway if I changed the date, so I didn't expect correcting these to fix the issue I'd been having.
It turns out that correcting these does in fact fix the issue I was having with saving products with an unchanged custom date field. Here is the corrected template code:
{% if variant is defined %}
<input type="hidden" name="variants[{{ variant.id }}][unlimitedStock]" value="">
<input type="hidden" name="variants[{{ variant.id }}][minQty]" value="">
<input type="hidden" name="variants[{{ variant.id }}][maxQty]" value="">
<input type="text" value="{{ variant.stock }}" name="variants[{{ variant.id }}][stock]">
<input type="text" value="{{ variant.price | number_format(0) }}" name="variants[{{ variant.id }}][price]">
{% else %}
<input type="hidden" name="variants[new1][unlimitedStock]" value="">
<input type="hidden" name="variants[new1][minQty]" value="">
<input type="hidden" name="variants[new1][maxQty]" value="">
<input type="text" value="" name="variants[new1][stock]">
<input type="text" value="" name="variants[new1][price]">
{% endif %}
I'm left wondering whether only having a single default variant allowed still permits new variants to be submitted, which might explain why I wasn't getting any errors? Similarly, I'm not sure why correcting the variant field names fixed the problem I was having with the custom date field not saving when the date wasn't changed.
entry.getErrors()
?