The available memory is just a estimate of how memory can be really used in your system for loading programs, so it is not a precise value.
As you probably already knows the normal behavior is to have the available memory bigger than the free memory, but in your case the opposite occurs, because the statistics used to calculate this estimated value will be helped by greater cache/buffers values, but they are penalized in your system because you dont have high cache or buffers, and because all the other things it takes into negative account, your available memory will get greater negative impact... so it is probably underestimated, as it will consider that this percentage of all your free memory, will be necessary for a lot of other things than simple loading programs (specially when you load programs - system will need more and more memory to store informations about the processes and much more - also like having a reasonable value of caches and buffers......).
From github:
MemAvailable: An estimate of how much memory is available for starting
new applications, without swapping. Calculated from MemFree,
SReclaimable, the size of the file LRU lists, and the low watermarks
in each zone. The estimate takes into account that the system needs
some page cache to function well, and that not all reclaimable slab
will be reclaimable, due to items being in use. The impact of those
factors will vary from system to system. To get a more detailed
answer, you will need to post the contents of your /proc/meminfo.