It seems intuitive that a byte array would be faster but then you have to keep track of the pointers and check for overflow...
As opposed to allocing and copying data. Well, I know which of those two operations is generally faster.
In this case it does not matter what avrisp() does. Since it is only called when an EOP is receiveed, it never gets called for the long request.
Only because you don't explicitly stop and call it when the EOP does arrive.
Then AVRDude sends the 133 byte string, and only part of it gets thru, the rest is lost. Since the EOP is the last character, it is never seen, and the request times out.
That's a different story. And difficult to prove. If only part of the data arrives at the Arduino, then the Arduino can be be faulted for not getting it all. If it all arrives at the Arduino, but does not all get added to the buffer, how would you know that? There is code in the Stream class (I think that's where it is) to check for overflow of the buffer. Perhaps you could light an LED when overflow occurs, to see if that is indeed the problem.
Though, I would be hard pressed to understand how that could occur, since reading is orders of magnitude faster than receiving.
With Arduino IDE 22 I can read all 133 characters without a hitch. With 1.0 it's getting truncated. I am very surprised by this, I would have expected to be able to easily keep up with the data at 19200 bps. The size of internal buffer should not be an issue but it appears that it is.
Since that is the only change that occurred, I guess I would tend to disagree with your conclusion.
Make a copy of HardwareSerial.h and HardwareSerial.cpp, with new names. Create an instance of the new class, and change the buffer size back to 128. Use your new instance in place of Serial, and see what happens. If it fixes the problem, then the Arduino team should look into the situation further.
I'm not sure where you are going with this, though. The avrdude command that you say is sending data is the function that talks to the bootloader, and initiates the process of loading a new sketch. I'm wondering if the "last successfully executed command" triggered some state change that is responsible for the issue you are having, rather than the size of the serial buffer.
You could, of course, test this by not calling avrisp when the EOP arrives. Just discard the data.