When you use only one match inside a bool must clause then there is no difference, the bool clause is useful when you want to combine multiple(boolean) criteria, more info on official ES doc. It supports below criteria.
- must
- must_not
- filter
- should
Let me show by taking a small example from your question.
Index mapping with just address and first_name
{
    "mappings": {
        "properties": {
            "address": {
                "type": "text"
            },
            "first_name" :{
                "type" : "text"
            }
        }
    }
}
Index 3 docs, all having same address mill, but different first_name
{
   "address" : "mill",
   "first_name" : "Johnson"
}
{
   "address" : "mill",
   "first_name" : "Parker"
}
{
   "address" : "mill",
   "first_name" : "opster"
}
Search query to show all adresses of mill but must_not contain first_name as parker
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "address": "mill"
                    }
                },
                {
                    "must_not": {
                        "first_name": "parker"
                    }
                }
            ]
        }
    }
}
Result only 2 address
"hits": [
         {
            "_index": "so-60620921-bool",
            "_type": "_doc",
            "_id": "2",
            "_score": 0.13353139,
            "_source": {
               "address": "mill",
               "first_name": "opster"
            }
         },
         {
            "_index": "so-60620921-bool",
            "_type": "_doc",
            "_id": "3",
            "_score": 0.13353139,
            "_source": {
               "address": "mill",
               "first_name": "Johnson"
            }
         }
      ]
Based on the OP comments, providing the query and filter context, to understand the performance aspects in details.