Leaf is the variable nobody warns you about. These are dense eastern hardwood slopes, and between about May and mid-October the canopy closes across the edge of every high viewpoint here. The Maryland Heights overlook itself is a bare rock shelf and stays open all year, but Jefferson Rock, Loudoun Heights and the approaches to all of them are screened in summer in a way they are not in winter. A bare-branch view in late February from any of these points shows you appreciably more of the rivers and the town than the same spot in July.
Morning belongs to the climbs. The bowl the town sits in holds heat and humidity, and the Maryland Heights switchbacks in a July afternoon are genuinely unpleasant. Be walking within an hour of the trails opening and you get cool air, low sun raking across the ridges, and the car park to yourself.
The last hour of daylight belongs to Jefferson Rock and Camp Hill, because they look south-west up the Shenandoah gorge and that is where the sun goes. In October this is the best half hour of the day in Harpers Ferry and hardly anybody is up there for it.
Sunrise belongs to the Point, which faces east down the water gap, and to the towpath on the Maryland bank.
Sunset belongs to Bolivar Heights, the only one of these that faces west across open ground.
And the hard constraint on all of it: trails and car parks close thirty minutes after sunset, and the last shuttle out of the lower town goes at 7 p.m. in summer or 5.30 p.m. in winter. Evening light and the shuttle timetable are in direct conflict from November to March, and the timetable wins.