They use a font intentionally designed to make simple alterations such as F->E harder and/or more obvious [0].
They aren't a random sequence of characters - they have semantics built-in: A German license plate follows the pattern
[A-Z]{1,3} [A-Z]{1,2} [0-9]{1-4}
(my knowledge here might be a bit outdated)where the first tuple is the issuing authority, the second tuple a qualifier thereof, and the third tuple just a random digit sequence.
The issuing authority is a variable-length optimality-based code: Large issuers like the state of Berlin get "B", whereas the city of Bitburg gets "BIT".
The qualifier follows the same idea: Plates issued in a rural area (AFAIK - I'm a bit rusty on the topic) generally have 1-letter combinations, while ones issued in cities have 2 letters (for a larger address space compared to adding a digit in the third tuple)
So what's the point? Well, motorists can immediately tell if another vehicle is
* from out of state (similar to the US - because all license plates have the state's signet on them)
* from out of town (so if you're in an urban area, they probably don't know their way around and you should keep some distance)
* from the deepest of rural areas (so not only will they not know their way around, they might also not know what a bicycle lane or a roundabout are, given the state of rural German infrastructure).