As a couple of your examples did not actually have identical meanings, I will focus on the one that better illustrates the nature of your question, namely 了解 vs. 分かる.
分かる is a general term for knowing something. It does not specifically imply full comprehension.
了解{りょうかい}する is used with peers or people of lower status (corporate or social environments). Equivalent to saying ‘Roger’, ‘10-4’, or ‘Got it’.
As 了解 is generally associated with military speech, it can be difficult to use it in most formal situations.
承知{しょうち}する means the same as 分かる, but is used with people who are above you in rank or status (customers, bosses).
かしこまりました means the same thing as 分かりました and is used in the same context as 承知しました. It is used as an affirmative that you have understood when addressing those of higher position.
理解{りかい}する is used to specify comprehension (full understanding).
As you can see, most of these have different meanings, nuances, or specific situations to be used in.
As an example of a 訓読み and 漢語{かんご} which mean the same thing, take the following example:
保持{ほじ} is an amalgamation of 保つ{たもつ} (to keep; retain; maintain) and 持つ{もつ} (to have, to hold). In English it would be ‘retain’ or ‘maintain’, usually used interchangeably with 保つ.
The reason that one or the other would be used is arbitrary, reflecting the environment that it is used in and/or the impression that the speaker wishes to convey. Aside from a simple literary inclination on the part of the speaker there is really no substantive difference in nuance.
漢語 usually sounds more educated, thus is preferred in academic surroundings. If used in casual situations, however, it might sound stiff and too formal.