Why there is very large difference between cross validation scores?
Your $R^2$ scores indicate that a linear model does not describe your data well. On top of this, there seems to be a large variability in data. You could try the following:


If the linear model is supposed to describe the data, check for outliers. They might be responsible for the large variation across the CV folds.
Try reducing the number of features if there are many. The model might be fitting noise.
Introducing regularization (lasso or ridge regression) might make the model more robust. This should decrease the variability of the CV errors, but the $R^2$ scores will get even worse.