The alternation between /s/ and /z/ in word pairs like that isn't caused by any major part of how modern English works. Instead, it's a fairly restricted phenomenon that shows up because of historical sound changes.

In both French (a major source of Latin-based English words) and English, there have been sound changes turning the sound [s] between vowels into its voiced equivalent [z].

These sound changes contributed to a minor pattern where /s/ at the start of some Latin-based verbs corresponds to /z/ in verbs starting with an unstressed Latin prefix that ends in a vowel. Some prefixes that are found in words like this: *re- pre-, de-* (e.g. *reserve, resign, preserve, deserve, design* with /z/ vs *serve* and *sign* with /s). 

However, when *re-* is used **as an English prefix,** with the specific meaning "again", it has secondary stress and it doesn't turn a following /s/ sound into /z/. So "re-sign", in the sense "sign again", is pronounced [ˌriˈsaın], unlike *resign* "quit" which is pronounced [rɪˈzaın] or [rəˈzaın].

The same alternation between [z] after an unstressed vowel-final prefix and [s] elsewhere applies to some roots that aren't used without a prefix in English, like *-sume* with /z/ in *resume, presume* vs. /s/ in *assume, consume.*

In the case of *-solve,* the /z/ pronunciation also happens to be used in the word *dissolve,* even though *dis-* is not strictly speaking a vowel-final Latin prefix. That's not as predictable.