In this case, yes, you should pass the entire DataLoader to train_model, since the sampler should make sure you are not sampling the test image.
You could create a list before the LOOCV loop and store all probabilities in it additionally to the predictions:

loocv_probs = []
for idx in range(nb_samples):
    ...
    loocv_preds.append(pred)
    loocv_targets.append(test_target.item())
    loocv_probs.append(F.softmax(outputs, 1))