Your analysis is correct. The 'right' BPMN 2.0 way to do it is indeed duplicating that information in the choice for the user and in the sequenceflow.
If it is a matter of the user selecting themselves which sequence flow to take, you could look into adding those sequence flow without an exclusive gateway, straight out of the task …. However, you would need specific conditions on the outgoing sequence flow still, something like 'sequenceFlowId == blah'.
So another thing you could do, is write your own activitybehaviour that only takes one outgoing sequenceflow instead the default way of taking everything in parallel.