Thanks for your question!
Actually, they are not the same APIs to use, you used the following APIs to geocode:
geoCoder.Match(string streetAddress, string zip);
You can realize the second API need to pass the street address and zipcode to geocode, but according to your input string, I think the "Roanoke" is a city name, not a street name. So when you used the "Roanoke, VA" as the first parameter to geocode, we always consider it to street address, so there are not any results returned for you. For this API it only call the StreetMatchingPlugin to search. For the first API, it would call all of the internal plugins to search that includes the StreetMatchingPlugin, CityDbfMatchingPlugin, CountyDbfMatchingPlugin, StateDbfMatchingPlugin and so on.
Hope this answer is helpful for you, any more questions please let me know,