N.B., I'm being a bit loose with terminology below, but that should still suffice.
Combat is used when you know how the batch effect is structured. For example, you have microarrays prepared and run at different dates, where you expect "date" to cause a change in and of itself. SVA is used when you suspect that your data has underlying variation that's not being caused by the biology you're interested in or factors that you can easily identify. This often happens when there are a combination of background effects affecting your data, but you don't know about them and aren't remotely interested in studying them.