The Russian orthography is based on morphological-historical principles, which means it tries to write down morphemes the same way all the time and keep the historical spellings of the morphemes (the latter is the main feature of the English spelling, too).
This Г read as B is an example of historical spelling. It is found only in the genitive case of masculine and neuter gender forms of
- pronouns: его, моего, этого, того, всего, чего, кого, какого;
- adjectives: маленького, синего, зелёного;
- participles: написанного, взятого.
The point is that all the rest of the Slavic languages have a [g]-type sound in those forms, it is only in Russian that [g] changed to [v] in the genitive case endings. Still, the Russian orthography keeps the traditional spelling with Г. Perhaps the reason for this is that in the dialect of Moscow which was later taken as the basis for Standard Russian [g] changed to [v] no earlier than in the 17th century, that is quite recently. The reason why the change occurred is the fact that bisyllabic unstressed endings tend to weaken: [оgо] > [оо] > [оvо] — first [g] dropped out and then the epenthetic [w] > [v] appeared. This trend originated in the Northern Russian dialects and can also be traced in some Pomeranian Lechitic dialects.
As for the word сегодня in which the Г read as B is in the middle of the word and not in the ending, that is also a trick of orthography. Cегодня is an adverb which is actually a frozen noun phrase сего дня "[on] this day", in which both words are in the genitive case, сего being the genitive case singular masculine form of the archaic demonstrative pronoun сей "this" which is not used anymore, it got substituted by этот. Writing adverbs that appeared from free phrases as a single word without spaces or hyphens is typical of Russian: вперёд (forward) < в перёд (to front), завтра (tomorrow) < за утро (after morning), etc. As you can see, even with сегодня it is in the genitive case ending that Г is read as B.
Also note that when I say "ending" that means a grammatical ending, not just the last sounds of the word. In Russian there are some words that end in /evo/, but nevertheles are spelled with B because that /evo/ is not an ending of the genitive case, for example марево ['ma.rʲi.və] "haze, mirage". In this word the root is марев- and -o is the nominative case singular neuter ending. Once in a Latvian newspaper in Russian I saw an add that started with ДЁШЕГО! which means "Cheap!" and is pronounced ['dʲo.ʂɪ.və]. That is really a funny mistake since the word must actually be spelled дёшево because it is not in the genitive case. The root of the word is дёшев- and -o is the suffix that turns adjectives into adverbs. Remember, not every Russian word that ends in [və] is written with Г.
With animate nouns the accusative case coincides with the genitive case, so everything which was said above about the genitive case is valid for the accusative case animate, too.