I handsawed off the horns a few mm over on each side -- to allow for some error. Some decide to leave longer breadboard ends to create a design element/feature out of them, or decide to enclose themthe haunch completely, but I wanted them flush and I wanted to be able to see the haunch. Anticipating some end grain planing, I pared the corners of the horns off with a chisel to prevent breakout.
In retrospect I should have switched from the plane to the sanding block sooner, because the last few runs with the plane pulled some fibres out around the edge, as can be seen in the upper lip of the mortise, in the form of little "craters". It would have also looked better if I'd picked wedges that matched the end grain zebra pattern, but it was quite a puzzle already -- again, more patience would have helped.
Edit 2: It's been a few months already, and I'm noticing that the table width of the top shrinks and expands by about 1/16" on each side of the table (average width of 30"), varying with indoor humidity. This was expected from the start, but the breadboard end length is not always flush with the table. I like to think of it as a built-in hygrometer feature. I sanded the horns flush around the holiday season, so it might be the gift that keeps on giving, depending on how the finish affects it.