I don’t think it’s possible, my guess on the current state of lxc/lxd is that only ONE target is allowed and of course if you allow wildcard in file name you could pull several files, so it’s only possible to get the content of a directory, with the flag ‘recurse’, if it can work for you (ideally the file you want is all by itself in a directory)
If not there is always the possibility to start a sshd service in the container and with sftp you have all its possibilities.
Those type of patterns are normally expanded by your local shell, this isn’t something that the LXD client can really expand itself as patterns will vary based on your shell and OS.
*.gz is also a valid filename which is what LXD tried to download for you.
Your best bet is to either transfer recursively or possibly use lxc exec to run your shell pattern in the container, getting the full filename that way and then download it with lxc file pull.
lxc file pull has a --recursive parameter, therefore it is an option to let lxc to recurse instead.
Having said that, it is useful to evaluate the available options and have an idea what is possible.
With SSH, you would need to figure out a usable way to deliver public SSH keys into the containers.
Either to lxc file push them, or add them into the container through the LXD profile.
With a full example, it would be easier to conclude as to which to choose from, and suggest to users.