ZKPaths always creates parent node using the OPEN_ACL_UNSAFE ACL:
zookeeper.create(subPath, new byte, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
As a result:
will never use the ACLProvider and will always create unprotected nodes.
The workaround is not to use those methods and create the parents manually, node by node.