One absolutely must emulate open collector outputs for a GPIB interface. The 5 control lines in particular are not compatible with active-high driven mode of operation. Trying to drive these high would result in similar problems as a I2C device trying to drive lines high. It doesn't work properly because it contradicts the protocol. For example, a I2C master that drives the clock high may work with many devices, but will suddenly fail to work with a slave device that uses clock stretching.
On most microcontrollers, including the Arduino's Atmega328P, you can emulate OC outputs by setting and leaving the output state to 0 (low), then toggling the pin between output (drive low) and input (float high).
You are right that we should emulate the OC output, but the consequences of driving high are not as bad as you would think. Any time the lines are driven high, no other device should be pulling low - that is the theory, anyway. Also, GPIB inputs are rated to handle 5V, but under 4V is better.
The reasons for going OC with all the lines are that it makes the Arduino immune from damage if another device is pulling low at the wrong time (maybe a device misbehaves on startup or shutdown), and also that speed is not the issue. The serial port in at 115200 baud which is just over 10,000 bytes per second. That is the maximum speed you can get out of this device, so active pullups are definitely not needed for speed. The code actually has liberal 10, 20 and 30 microsecond delays everywhere, so I think Emanuele decided that with about 100uS per byte maximum speed, he could be generous with delays for settling time without affecting speed much.
I am definitely going to test OC-type outputs, and I also have also hooked a logic analyser up. I can see a few odd things that probably will not affect it working, but just do not look right. Overall though, the traces look excellent.
Also I have taken the baud rate up to the maximum for a 16MHz Atmega328 of 1000000 baud on my Arduino and it works! There could be some hope of speeding this up. To get any GPIB speed improvement, I have to start reducing the built-in delays.
Richard