After posting this I noticed that the furnace control board has an LED that was flashing. Checked the manual and it was an error code saying the pressure switch contact did not close after the inducer was energized. This means nothing too me but before I was going to call a pro I wanted to take a look inside. Pulled out the blower motor and everything looked spotless. Heat exchanger pipes are very clean and there is plenty of room for air flow, no need to worry about internal blockages.
After putting it all back together the error code went away and the LED is green (everything working). Maybe cutting the power caused the electronics to reset and everything is fine now. Seems to be working but who knows. If the issue comes back I will be having a pro come take a look at it.
I finally found some time yesterday to take a closer look at the furnace.
Gas Pressure
I started by measuring the incoming gas pressure using a gas pressure gauge. I found it to be 6 WC (inch water column), which is well within the acceptable range specified on the furnace.
Dirty Gap
Next I took a closer look at the spark gap itself, and watched closely as the spark was generated. I even recorded the spark with my video camera, which allowed me to zoom in fairly close. This is when I noticed a bit of carbon buildup on the electrodes, and wondered if it could be that simple...
Cleaning the Gap
I grabbed a bit of 220 grit sandpaper, and cleaned the electrodes up a bit. steel wool is probably the tool of choice for this job, but I didn't happen to have any on hand at the moment (not yet unpacked).
Success!
After testing the pilot ignition a few times, the problem seems to be fixed. We had a cold night last night, and the furnace fired up fine all night. As I write this, the furnace has just cycled successfully yet again.
Update
I found this YouTube video from Grayfurnaceman that describes the problem exactly, and says that the only solution is to replace the assembly. I'll be replacing the pilot assembly once the weather warms up, so we'll see if that solves the problem.
Best Answer
Could be a faulty thermostat. If you have a multimeter, check if there is any potential on the output, change the setting for a temperature, higher than the ambient and check again. If the electrical potential is the same you may need to change the thermostat. IDK, but I think the heater can't just turn on by itself- there must be a stuck relay/contactor or the thermostat is faulty.