The only difference is the direction of the relation. It's like asking what's the difference between "keep B away from C" v "keep C away from B", and "B is C's left" v "C is B's right".
Equation reduction
"The accident could have been prevented by B"
- = "B could have prevented the accident."
- = "B could have kept the accident away from therethen (spacetime state)." (The mover is the accident.)
- = "B could have stop the accident from moving to therethen"
"The accident could have been avoided by B"
- = "B could have avoided the accident."
- = "B could have kept therethen away from the accident." (The mover is therethen.)
- = "B could have stop therethen from moving to the accident"
**Substitution**
B = "driving carefully"
"The accident could have been prevented by driving carefully." = "Driving carefully could have stop the accident from moving to therethen."
"The accident could have been avoided by driving carefully." = "Driving carefully could have stop therethen from moving to the accident."
B = "Tom"
"The accident could have been prevented by Tom." = "Tom could have stop the accident from moving to therethen."
"The accident could have been avoided by Tom." = "Tom could have stop therethen from moving to the accident."
Separately, the relation of cause to effect is the same as the relation of effect to cause with direction inversed. In other words,
if everything is linked to everything else in an infinite loop,
then every effect is itself the cause-when-inverted-direction of its cause.
and "The accident could have been prevented" is equal to "The accident could have been avoided". (In other words, you could pick either sentence and they mean the exact same thing)
if not,
then every effect less the first effect is itself not the cause-when-inverted-direction of its cause.
and "The accident could have been prevented" is not equal to "The accident could have been avoided"