발음별로 같은 한자를 별도로 할당해 놓은 것은 유니코드보다는 그 문자 집합의 원천이 되는 KS X 1001에서 내려 온 것으로 봐야 합니다. 아마 정렬이나 그런 면에서 이득이 많아서 그렇게 한 게 아닐까 싶어요. (독음 분석을 해야 하는 일본어와는 달리 한국어는 한자가 섞여 있어도 단순한 collation 알고리즘으로 발음 순 정렬을 할 수 있습니다.) 물론 유니코드 입장에서는 듣도 보도 못 한 발상이니 대표 발음을 뺀 모든 문자가 호환성 영역으로 갔습니다만.
사실, 유니코드 이전의 상용 한자 4888자 자체도 당연히.. 서로 완전히 다른 4888자의 한자로 구성된 집합이 아니었지요.
BMP 이후로 유니코드에 등록되는 한자들은 어차피 과거의 2바이트 문자 체계에는 없던 레어템들일 테니 호환용 영역 신경 쓸 필요가 없을 겁니다. (하지만 실수로 중복 등록되는 한자는 있다고 하죠. -_-)
윈도우 운영체제에 대해서 무척 이상한 건, 왜 金에서 '금'이 호환용 한자에다 배당되고, '김'이 원래의 CJK에다 들어갔냐는 것입니다. 테이블의 오류인데 윈도우 95부터 7까지 그냥 이대로 수정 없이 밀어붙이는가 봅니다. 오히려 아래아한글은 똑바로 돼 있다고 하죠.