Basically /snap/bin/lxd init --preseed < config.yml means that lxd through snap-confine must have access to config.yml so it can be read. This file is probably somewhere that snap-confine isn’t allowed to read from, causing the issue. You should be able to confirm that by looking for DENIED entries in dmesg.
cat config.yml | lxd init --pressed achieves the same, but in this case, cat on the host (unconfined) reads the file and then passes it through a PIPE to /dev/stdin of lxd. snap-confine is allowed to read from /dev/stdin, so this works properly.