Soronization / devoicing + other things

Is there any rule to know when to pronounce the final s as z or not?
my friend had an idea that after a consonant the s should be voiced whereas after a vowel is voiceless. however, it is not always true.

he also supposes there are differences between the british and american english reffering to the sound of the interconsonantal “o” and “a”.

e.g. gods and dance differ depending on the dialect

is there any rule for that?

The general rule that most native speakers have never heard but follow is: the final s becomes a z sound after vowels or voiced consonants, but s after voiceless ones.

z sound after s, z, sh, zh, ch, j, m, n, ng, l, b, d, g, v, voiced th, or r

s sound after p, t, k, f, or voiceless th

I don’t know what the interconsonantal o and a are, but 'a’s can certainly vary by region.