More than likely it is borrowed from Chinese.
十 百 万 亿[億] 兆 京
respectively:
10^1, 10^2, 10^4, 10^8, 10^16, 10^32 etc. (goes on until 10^4096 !)
I have seen 亿 and 兆 used in these definitions in modern Chinese and Korean, and certainly 億 in japanese for money e.g. 三億円 meaning 3 x 10^8 yen.
This system of creating a new word whenever the length doubles seems natural, as it is the minimal set of words you need to represent any arbitrarily large number without repeating yourself. It also provides a more unique way to say a number. For example, in english we could say one million billion == 10^15 == one thousand trillion).
This has changed in modern china... 亿,兆,京 now sometimes mean smaller powers in different contexts for convenience. 兆 can mean a megabyte (10^6), e.g. 四十兆 => 40 Megabytes. Not sure if Japanese has this ambiguity, but 千 (10^3) certainly exists and doesn't fit the 'pure' traditional system.
In any case, I have never seen a split into blocks of 4 when writing a number down. But that is the logic that should be used when reading a number out.
That is misleading though, since even larger numbers should be read by recursively bisecting at the highest 10^2^n which fits, and this can get a lot more abstract than simple powers of 10^4. To choose an unrealistic example:
1,000,020,000,304,567 =>
10000200 * 10^8 + 00304567 =>
1000,0200 億 30,4567 =>
(1000 * 10^4 + 0200) 億 + (30 * 10^4 + 4567) =>
(1000 万 200) 億 (30 万 4567) =>
(一千 万 二百)億(三十 万 四千五百六十七)
Please note it is different than just separating with length 4 blocks: 10^12 does not have a unique name, but 10^16 does. So it really is unlike the western system. Blocks are only assigned a new name when they reach twice the length of the last named block. Rather than just 3,6,9,12,15, we have 4,8,16,32.
For negative powers of 10, the western style of 10^-3, 10^-6, 10^-9 is used... (equivalent to milli/micro/nano).