PWM Communication without external hardware
Keanu Reeves, nice to see you here! :D
The main reason is level-shifting of the logic signal, where that bus can have anything from 4V to 20V for its logic high level, while Arduino can have no more than 5V.
Also, the logic high output from Arduino is no more than 5V and it needs to be raised to the J1850 level (around 12V) to make sure it is high enough to be detected as a logic high, as well as to raise it above the electric noise usually present in a car.
The logic low on the bus is anything below 3.5V, while anything above 3V is considered a logic high by the Arduino, and anything between 1.5V and 3V is considered undefined or gray area (not recommended).

Another reason for that circuit is to protect the Arduino from the higher voltages on those bus/data lines.