In what kind of program is the file open on the SMB client? If that program has a “save as” function, that would probably be your best bet. Apart from that, if you’re lucky, the directory entry might be cached on the client. If it’s still visible there, you may try to copy it.
Otherwise, probably the only way is to look at the raw blocks of the file system, gather the block addresses of the file data, and piece it all together. This requires intimate knowledge of ZFS’ on-disk data structures. There might be tools to assist in that, but I really don’t know because I’ve only done things like that with UFS before, but not with ZFS.