The basic answer to this question which you can google as well is
Base58Check encoding. There serval reason for the S to be used as you know in the mini private keys there some uppercase, lowercase and Numbers mixture with the total
30 characters. So sometimes what happen people gets confused with the 0 and O for this reason in Base58Check encoding for error free encoding of data eliminates such latter's and numbers.
Simple answer is because its Base58Check so it starts with "S" as for the public keys there some standards.
- Taproot address - P2TR : bc1p
- Bech32 / Segwit: bc1q
- Script address: 3
- Legacy address: 1
You could also wait for other members who may have more appropriate answers to respond, if there is such answer.
There is no such answer as its commonly considered because of its encoding type..