Thanks very much for all this info. It's really useful.
But I'm afraid I have a more fundamental problem, and it involves the LED driver output on pin 3 of the Arduino produced by the library. Just to make sure it was ok, I put my DSO150 scope on it, and found that it's not ok. Some of the positive-going pulses are very weak, and sometimes they are missing entirely. I tried it with the SendRaw example that comes with the IRremote.h library, and got the same thing. And the bad pulses don't happen at the same place each time. I'm actually kinda surprised it works with the Roku puck at all, but I guess most of the time it's close enough.
I don't look forward to going through his code to figure out what's wrong. Since most of the bits are sent correctly, and the errors occur at different places each time, my guess is the problems result from the Timer 0 interrupt for millis(). He doesn't ever call millis(), but he does call micros() many places. So it may not be possible to turn off the Timer 0 interrupt. And of course I could be wrong about that being the problem. I guess it could even be a problem with my scope, but I think that's not likely at these speeds.
I've had bad luck with Arduino libraries. Anyway, does anyone know of another IRsend library that I could try? It's just plain old NEC format, and I have the raw data that's sent.