Arima calls stats::arima for the estimation, but stores more information in the returned object. It also allows some additional model functionality such as including a drift term in a model with a unit root. forecast calls stats::predict to generate the forecasts. It will automatically handle the drift term from Arima.