Both snap and flatpak package all the runtime dependencies of an app. I regard this is as good thing as it ensures apps are much more portable and avoids "dll hell". They take up more hard disk space, but hard disks are massive these days.
The first big difference is that Snap is a project of Canonical that in the future intends that all Ubuntu programs will use this technology . While Flatpak is not associated with any Linux distribution and its goal is to improve the installation of the programs in Linux. ...
Then there is the main difference between both: the way of distributing the packages. Snap packages can only be distributed through the Canonical store, i.e. they are linked to it . This brings some advantages like improved security but limits the developer. Conversely, Flatpak is not connected to any shop and this makes each developer the owner of the shop’s distribution . This is more in line with the open-source philosophy.
I like flatpak as a user. I'm less keen on snap because it is tied with a company. Fedora seem to be pushing flatpak.
I'm a programmer who has worked with Windows and Linux. However, my Linux experience has always been niche (non-gui) and the companies I have worked for have used Windows as the primary desktop OS, logging in via SSH (command line only) for source builds. This is the first time I've ran linux desktop as my primary and only desktop.
As a personal project, therefore, I've been looking into AppImage. Currently they are used only for download and run. However, each AppImage carries with it meta about the app, such as Category, icon and description. I therefore I expect in the future, when supported, AppImages can easily be installed.