Hi,
Solving question-answering using Transformers is usually done in one of 2 ways:

either extractive, where the model predicts start_scores and end_scores. In other words, the model predicts which token it believes is at the start of the answer, and which token is at the end of the answer. This was introduced in the original BERT paper.
either generative, where the model simply generates the correct answer. This was introduced in the T5 paper, where they treated every NLP problem as a generative task.

As BART is a seq2seq (encoder-decoder) model similar to T5, it makes sense to use BartForConditionalGeneration. You can indeed use the .generate() method at inference time to let it generate a predicted answer. However, BartForQuestionAnswering is also available in the library, meaning you can also use BART to do BERT-like extractive question answering.
If you ask me, option 2 is much simpler, and more “human-like”.