In pinyin, why is there an inconsistency between bo, po, suo, duo etc
It seems that Pinyin does this to conform to a former phonetic transcription system 注音符号, which drops u (ㄨ) before o (ㄛ) after b p m f.
注音符号 was originally designed to reflect some old (perhaps not even real) phonetic rules and symbols like uo (ㄨㄛ) uan (ㄨㄢ) were used. However, in most Chinese dialects there's no contrast between rounded and unrounded vowels after b p m f. So they decided to remove all u (ㄨ) and yu (ㄩ) after b p m f to simplify this system. [1] In fact (u)o is the only rounded vowel that can appear after b p m f. [2]

Another note: o (ㄛ) and e (ㄜ) are traditionally considered to be a rounded-unrounded pair, that's why 注音符号 deliberately chose similar symbols to represent them. In the Pinyin system, you will find “we” “o” are sometimes used interchangeably. e.g. weng = ong.
[1] 聲韻學：為何ㄅ、ㄆ、ㄇ、ㄈ不能與ㄨ的結合韻相拼？

民國10年（1921年）2月國語統一籌備會訂正、教育部公布之《教改國音字典》（商務印書館本）附〈修正《國音字典》之說明〉一文，云：
又如唇音各聲母與韻母拼合，原案根據韻書，有用開口呼之韻母者，有用合口呼之韻母者，如「剝」「駁」音「ㄅㄛ」，「撥」「鉢」音「ㄅㄨㄛ」；「煩」「繁」音「ㄈㄨㄢ」，「凡」「帆」音「ㄈㄢ」之類；編《字典》時，因唇音聲母本（巳）［已］合口，故遇原案中唇音與合口呼韻母拼合之字，除「ㄨ」韻以外一律改用開口呼韻母。

[2] 唇音字的开合

因此，唇音字没有开合口的对立。赵元任《中古汉语的语音区别》和李荣《切韵音系》中都主张中古汉语唇音字不分开合口。虽然原则上没有对立，但是在开合口分韵而且原来的主要元音是央、后元音的韵部中，唇音声母后有一个介音。
这和现代汉语普通话的情况非常类似。其他位置的声母都有有无介音[u]的对立，如“单”和“端”、“甘”和“关”、“三”和“酸”、“詹”和“砖”、“安”和“湾”，只有唇音原则上没有不分开合的对立。