Can I accurately call sklearn.model_selection.train_test_split multiple times when data doesn't fit into memory?
This should be fine. If the data is independent of its position in the list, this should give basically identical results. 

If the data depends on order, then grabbing some data for training and testing from each batch will have a smoothing effect, making the training and test sets more representative than the results you would get with a raw train_test_split.