According to
http://www.go.jeep-xj.info/HowtoECUcodes.htm the code 33 (w/o air conditioning) is what you might call the 'closing code' of the series -- it's just its way of telling you that it is done giving you codes.
I'm not sure what to make of the code 35. You could try using the self-diagnosis method -- put the key in the ignition & turn it to the "on" position (not "start," just "accessory on" or whatever it's called) three times, leaving it in the "on" position the third time (that website I linked to above describes the procedure also). Maybe that will give you different codes, but probably not.
Most XJs have all the same wiring, regardless of whether they have all the same features. For example, I believe most XJs have the wiring for fog lights, though many were sold without fog lights. Perhaps there's a fault in the _wiring_ where your aux. fan would be if you had one? I'm sorry, I have no clue.
But your mechanic may be correct about the plugs. Try the cheap Champion "Truck Plugs" (part number 4412, about $2.69 a piece at AutoZone), I've heard only good things about running these simple plugs in XJs. Most folks are against running the Bosch Platinum +4 plugs. Some people suggest getting Champion plugs & gapping them a little larger than the stock .035" but I haven't tried that. I run the Champion Truck Plugs with Bosch plug wires (7mm). I found that a good set of wires like mine make a siginificant difference in the smoothness at idle (
www.jeep4.0performance.4mg.com recommends Splitfire 7.5mm dual core spark plug wires). I suppose you could use a multimeter to test your ignition coil, also, to see whether that might be causing the problem (or have your mechanic check it).