To start, let's point out that using SMOTE on the entire dataset before a test set is split off is bad: as you say, it causes data leakage, and thus generally overly-optimistic estimates of performance. See e.g. SMOTE data balance - before or during Cross-Validation
But here that's not what you've done, and the test set score here should still be an unbiased estimate of future performance of the model. In that sense, based just on what you've done, this is fine.
Applying SMOTE across the training set before using cross-validation for model selection has leaked information to the test folds, but at the end of the day the model that got selected is performing well on the untouched separate test set. Every model that got compared had the same data leakage, so probably the effect was to select a model that performs well in general but also got the best improvements from the data leakage. So it could well be that there's a better model with less improvement from the leakage, but you should've seen that when you retried the experiment with the more-proper approach.
All that said, I suspect the improved performance is just due to noise. If you repeated the experiment with different splits, random states, etc., I expect you'll see the net improvement to be near zero (and maybe negative). (If you have some time to do that sort of experiment, I would love to see it as an answer here.)