Re: C / C++ compilers and libc could do this too
Because inserting a sizeof() check is too terrible to contemplate, since it might be redundant? It isn't like that will slow things down at all, since the generated assembly can easily fit in unused execution slots.
If you know the size of a & b at compile time you can use a pragma that will cause the compilation to abort if it isn't satisfied, then it won't add a few bytes to the code footprint (something I'm sure we should all be gravely worried about, in an age of 250MB smartphone apps)
Or, and I know this is crazy, simply use strncpy() which will work just fine if your belief that the destination is big enough is still true. Because no one will ever try to maintain your code, and you won't ever come back to it a couple years later and not remember that a and b need to be of identical size. Because you're perfect and have memory like an elephant, and safe programming techniques are for all the stupid people who aren't you.