I also had a huge performance difference from the Weka and Scikit-learn Random Forest implementations with the same data and the same configuration(?). After trying all possible solutions, I noticed that it was actually pretty straightforward. Weka shuffles the data in default but Scikit-learn does not. Even after setting Weka's configuration option: use the data as ordered, it is still the same. So, here is how I handled it. Use the random_state=1 (it is the default in Weka), shuffle=True in Scikit-learn for cross-validator, bootstrap=True in classifier. It produces quite the similar results with Weka. E.g.
classifier = ensemble.RandomForestClassifier(n_estimators=300, max_depth=30, min_samples_leaf=1, min_samples_split=1, random_state=1, bootstrap=True, criterion='entropy', n_jobs=-1)
cv = StratifiedKFold(n_splits=num_folds, shuffle=True, random_state=1)
grid_search = GridSearchCV(classifier, param_grid=param_grid, cv=cv)