Found the solution! Here it is, in case someone finds it useful in the future.
I was splitting the data into train and test sets incorreclty (due to a wrong intepretation on how numpy arrays work), so I decided to change the approach by using list comprehensions:
training_images = [images_path[i] for i in train_indices]
training_labels = [labels[i] for i in train_indices]
validation_images = [images_path[i] for i in val_indices]
validation_labels = [labels[i] for i in val_indices]

And now I am getting the expected result from the WeightedRandomSampler, balanced batches on every iteration!