I see that there is an XGBoost package as well as XGBoost option in the "train" function in Caret. What is the difference between these two options, is it that they provide different settings? More generally, how would one choose between using the "train" function and a standalone package for the method?
Caret is designed to:
streamline the model training process for complex regression and classification problems. The package utilizes a number of R packages...
train has two draws: a common API for many different models, and performing hyperparameter tuning by default.
Specifically, caret calls the xgboost package. It does some checking of your data before calling xgb; most notably, it uses that to select the objective function (which may cause some confusion). And it provides some hyperparameter distributions to search over (which you can modify if desired). However, it doesn't seem possible to search over the hyperparameters of xgboost that aren't built into the caret list of parameters.
So, it seems to me: use caret for a convenient wrapper and hyperparameter tuner, and use the original package for finer control.