Ambos compartilham a Shared Pool.
A library cache armazena os comandos SQL para que esses possam ser reutilizados. Também são armazenados aqui os comando PL/SQL. Esses comandos são armazenados junto ao plano de execução e a árvore de parse. Nesta área permanecem os comandos mais recentemente utilizado, ou seja, um comando que não tenha utilização constante tende a ser removido dessa área.
O data dictionary cache é a área onde as informações já consultados do dicionário de dados são armazenadas. Essas informações são metadados do banco.
Você tem uma boa noção destas duas áreas de memória na documentação oficial em docs.oracle.com