get_posts returns all posts

You are not using correctly the tax_queryargument. This argument takes array of tax query arguments arrays, to allow for complex queries with multiple taxonomies. You can learn more in the WP_Query documentation

This is the correct way:

$malls_args = array(
    "post_type" => "mall",
    "tax_query" => array(
        array(
            "taxonomy" => "shop",
            "field" => "name",
            "terms" => "Compi" // - - - - - - $store_name gives all posts too.        
        ),
    )
);