The problem is that ...

> Er soll gut Englisch sprechen

... can mean two things in German:  1) He speaks good English (they say) and 2) He should be speaking good English (he's been in the country for a few years, after all).

This is really not all that different from the English "He's supposed to speak good English", though, is it?

> Is there a compact way of translating this into German, or is it necessary to change the sentences to be more explicit in meaning?

Yes, I think you'd have to reword slightly to remove any ambiguities. A few examples:

    Eigentlich sollte er gut Englisch sprechen (but for some reason he does not)
    Ich nehme an, dass er gut Englisch spricht (but I don't know for sure)
    Angeblich spricht er gut Englisch (or so I've heard)