Carb had been rebuilt to factory spec.
Clearly, that isn't the reality of the situation. This is where virtually everyone goes
off the rez, at some point during the process of learning these machines. Most simply take it for granted that carburetors are all the same. So, why wouldn't the same carb cleaner that works so brilliantly with a 4bbl automotive carb, or a 40mm bike carb do the same thing with a 16mm Keihin...after all, they're all just metered air & fuel leaks, right? Understand why that mindset doesn't translate and things become clearer. The reason: scale. The smaller the engine (and the carb that feeds it) the less margin for error. These little carbs are high-precision pieces. Thus, as you've seen, a slight change can have a seemingly disproportionate impact.
Since you're getting an overrich condition, we can probably rule-out the most common issue...a partially-clogged emulsion tube (which is also the main jet holder). Assuming that the carb body is as squeaky-clean as you make it sound, the first thing I'd check is the main jet. Was that replaced with a new one? Main jet sizes, right from the factory, varied over the years. While Keihin's numbering system has been consistent since day one, there are other parameters...emulsion tube configuration, needle jet internal taper, jet needle profiles and carb body configurations - including the airbleeds. Reformulated gasoline hasn't made life any easier. Most of the rebuild kits out there have larger main jets than the carburetors originally had installed. Sometimes that works out well, other times not so much. The point, here, is that there's more than the main jet controlling fuel flow. CT70 carbs have come with mains as small as #58 and as large as #65. Every one of these carbs, regardless of subtle flavor variations, had to deliver the same air:fuel mix...because that's what these engines need. This is a long-winded way of saying that you may have an oversized main jet and you cannot, necessarily, use your other bike's carburetor as a reference guide.
The first thing to try is adjusting the jet needle. Move the C-clip to the top groove, then go for a test ride and see if anything changes. It should be lean. If it's still rich, time to pull the float bowl. Check the float height. Check the float for leaks & pinholes. Shake it, if you hear liquid sloshing around inside, it's leaking. Place the float in a freezer then, once cold, submerge it in hot water. Any pinholes will issue air bubbles. Make sure that the inlet needle and seat assembly is complete, with the spring & plunger inside the needle and the gasket on the brass inlet seat...between it and the carb body. Check the airbleeds. Spray solvent through each. You should see roughly the same amount of solvent flowing through both the main & pilot. You'll have to remove the pilot airbleed screw first, to perform this check. If all of this checks out but the engine is still running rich, time to source a smaller main jet. I'd go for the next two smaller sizes, for the sake of expediency...you'll have the second, if needed and the postage will likely exceed the price of a single jet.