I would distribute the "on" to both sides of "and", when expanding. As such, it would expand as:
Closed on eve of public holidays and on public holidays.
...which is perfectly grammatical.
I won't argue that the initial construct isn't annoying, though. It might better be worded:
Closed on public holidays and the eve thereof.
But, clear as that is, it sounds a bit hoidy-toidy. Maybe this:
Closed on public holidays and the day before.
I don't know.
It might be easier to just be specific as the holiday is approaching:
Closed Christmas eve. Re-opening Boxing Day.