The only difference is the direction of the relation. It's like asking what's the difference between "keep X away from Y" v "keep Y away from X", and "X is Y's left" v "Y is X's right".
Equation reduction
"The accident could have been prevented by X" = "X can prevent the accident."
"The accident could have been avoided by X" = "X can avoid the accident."
"X can prevent the accident." = "X keeps the accident away [cf] from the universe"
"X can avoid the accident." = "X keeps the universe away from the accident"
**Substitution**
X = "driving carefully"
"The accident could have been prevented by driving carefully" = "Driving carefully keeps the accident away from the universe"
"The accident could have been avoided by driving carefully" = "Driving carefully keeps the universe away from the accident"
X = "Tom"
"The accident could have been prevented by Tom" = "Tom keeps the accident away from the universe"
"The accident could have been avoided by Tom" = "Tom keeps the universe away from 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"