What makes it possible for a plugin to not able to delete?

While I don’t know exactly what code is responsible, your last comment– ” It has this uninstall.php inside that plugin’s plugin root directory”– gives me a pretty good idea of what is happening.

If the plugin can not be written without running code within the
plugin, then the plugin should create a file named ‘uninstall.php’ in
the base plugin folder. This file will be called, if it exists, during
the uninstall process bypassing the uninstall hook.

When using ‘uninstall.php’ the plugin should always check for the
WP_UNINSTALL_PLUGIN constant, before executing. The
WP_UNINSTALL_PLUGIN constant is defined by WordPress at runtime during
a plugin uninstall, it will not be present if ‘uninstall.php’ is
requested directly. It will also not be present when using the
uninstall hook technique. WP_UNINSTALL_PLUGIN is only defined when a
uninstall.php file is found in the plugin folder.

https://codex.wordpress.org/Function_Reference/register_uninstall_hook#uninstall.php

That file either has a syntax error and triggers a fatal error, or it does something to prevent deletion. The later behavior seems a bit malicious to me, but I can’t say for sure. If you were to post the code from that file a better answer may be possible.