The heart of your confusion lies in the fact that できる can serve in other roles in which it is not the potential form of する。It's better to think of 出来る as its own completely separate word, which also has a use/meaning that conveniently lets it fill the role of the potential form of する。
Let's look at the definition of できる・出来る in a dictionary (大辞林第2版).
- 自然に生じる。(ア)それまでなかった物が生じる。
- 新たに作られて完成する。
- 作物が成熟する。また,作物が生長する。
- 課せられた作業・課題や準備が完成・完了する。仕上がる。
- 材質・つくりが…である。
- 人が…するように生まれついている。教育されている。
- 能力・人柄がすぐれている。
- 世間に知られないうちに,男女が情交を結ぶような親しい仲になる。
- 能力・可能性がある。近世以降の用法。
(ア)おこないうる。
(イ)それをうまく行える。
(ウ)動作性の名詞を受けて,…をすることが可能であるという意を表す。
(エ)サ変動詞の語幹に付いて,…することが可能であるの意を表す。
Only definition #9 is the potential form of する. Everything else encapsulates できる's unique meaning.
As @istrasci said, here 日本語できる is actually 日本語[が/は]できる abbreviated. This できる is NOT an abbreviation of 分かることができる (and as @istrasci mentioned, the meaning of stative/affective verbals like 分かる already encompasses their potential meaning). Also, the "hidden" が here is not the one in ジョンが日本語できる, but in something like ジョンが日本語ができる.
You are right that 日本語 is not a サ変名詞/compound verbal. If 日本語 could be used as such (i.e. 日本語する), then we would not have 日本語ができる, but just 日本語できる as the unabbreviated form.
I think using 大辞林 might not be the best dictionary to explore the 日本語ができる meaning of できる, though, so let's use 新明解(第五版)for that:
1.〈(なに・どこニ)―〉 物事が生じる。
〈(なにニ)―〉 成立する。
その方面の特技を持っていたり それをこなすだけの能力を備えていたり する。
何かをする△見込み(チャンス・余裕・権利)が有る。
その人のしようとした事が支障無く成立する。
〔俗〕(相愛の)男女の間に、情交関係が成立する。
#3 is the definition we want. Zooming into the example sentences for #3, we see:
- 運転ができる
- 外国語のできる〔=話せる〕人
- この問題は私には出来ない
- よくできる〔=成績の良い〕人だ
We can also see here how できる is different from 分かる, in that it implies that someone can speak the language, not merely understand it.
According to JSL (Japanese: The Spoken Language) by Jorden, this usage of できる means something akin to "capable:"
Sâtoo-san wa eégo ga dekimàsu. 'Mr/s. Sato (for one) is capable in English."
-Lesson 5, p. 116 (the romanization is a kunrei variant; don't be alarmed by the oo/ee)