The difference is small and hard to explain. I would use "brought on" when it brings a circumstance that will last for a while. I would say "brought on a headache" "brought on a sadness" or anything that will last a while. I would say "brought a smile" "brought a moment of peace" or something like that. But please note, the difference is small, you will be understood either way, and no one would think it is strange if you used instead of the other.