Your question has everything to do with your code and nothing with subversion.
Explanation
Your versions 2.0 and 3.0 seem to be closer related. Once you merge your fix into either of them and resolve the conflicts, propagating the merged revision will not cause the same conflict again. Because, well, you already resolved it in your code.
This paragraph applies to any VCS - because it has nothing to do with VCS.
Peculiarities of Subversion
What's special about subversion is that it stores the information on what was merged into what as a property svn:mergeinfo
(read more about it in the Red Bean Book). Basically, it keeps you from applying the same changes twice. See What's SVN's actual use of mergeinfo? for an exhaustive explanation.
Subversion is pretty good at tracking mergeinfo. Is it so good that it never fails? Obviously not, as the writers of the Red Bean Book felt compelled to write a Final Word on Merge Tracking.
Note that it covers some esoteric cases but does not forbid your 1.0 -> 2.0 -> 3.0 merge. So it should be fine.
The Answer
So the answer seems to be "it doesn't matter".
From a developer's point of view I'd be tempted to use whatever is less effort.
But wait ...
The Red Bean Book also has a word on Release Branches and suggests the trunk -> branches/release merge.
Subversion has one special branch, called "trunk", by convention. The idea is, that the newest version of your software lives on trunk. Anything else is either a feature branch, a release branch or a tag.
You found a bug that needs to be fixed in three releases of your software (I don't know how many releases you have but I'll assume three).
Wouldn't it be best to fix the bug on trunk and then propagate it to the releases? Not necessarily from a technical point of view but from a logical point of view. Doing so will cause least astonishment if somebody takes a look at the revision graph after some time.
Food for the trunk-to-release school of thought.