diff --git a/jsonargparse/signatures.py b/jsonargparse/signatures.py
index ba936c6..d0e509a 100644
--- a/jsonargparse/signatures.py
+++ b/jsonargparse/signatures.py
@@ -2,7 +2,7 @@
 
 import inspect
 import re
-from argparse import Namespace
+from argparse import Namespace, SUPPRESS
 from functools import wraps
 from typing import Any, Callable, List, Optional, Set, Tuple, Type, Union
 
@@ -491,7 +491,7 @@ class SignatureArguments:
             {},
             added_args,
             skip,
-            default={},
+            default=SUPPRESS,
             sub_configs=True,
             instantiate=instantiate,
             **kwargs

diff --git a/jsonargparse_tests/signatures_tests.py b/jsonargparse_tests/signatures_tests.py
index 87a55d4..757d37e 100755
--- a/jsonargparse_tests/signatures_tests.py
+++ b/jsonargparse_tests/signatures_tests.py
@@ -386,7 +386,9 @@ class SignaturesTests(unittest.TestCase):
         parser = ArgumentParser(parse_as_dict=True, error_handler=None)
         parser.add_subclass_arguments(calendar.Calendar, 'cal', required=False)
         cfg = parser.parse_args([])
-        self.assertEqual(cfg, {'cal': {}})
+        self.assertEqual(cfg, {})
+        cfg_init = parser.instantiate_classes(cfg)
+        self.assertEqual(cfg_init, {})
 
 
     def test_invalid_type(self):

Config check failed with `add_subclass_arguments(required=False)`
```python
from jsonargparse import ArgumentParser

class A:
    ...

class B:
    ...

parser = ArgumentParser()
parser.add_subclass_arguments((A, B), nested_key="foo", required=False)
args = parser.parse_args()
```
produces:
```
scratch_12.py: error: Configuration check failed :: Parser key "foo": Value {} does not validate against any of the types in typing.Union[__main__.A, __main__.B]:
  - Type <class '__main__.A'> expects an str or a Dict with a class_path entry but got "{}"
  - Type <class '__main__.B'> expects an str or a Dict with a class_path entry but got "{}"
```

My assumption was that by setting `required=False`, `--foo` does not need to be passed.
And `args` would be an empty dictionary.
jsonargparse_tests/signatures_tests.py::SignaturesTests::test_not_required_group
jsonargparse_tests/signatures_tests.py::SignaturesTests::test_add_class_arguments jsonargparse_tests/signatures_tests.py::SignaturesTests::test_add_class_from_function_arguments jsonargparse_tests/signatures_tests.py::SignaturesTests::test_add_class_implemented_with_new jsonargparse_tests/signatures_tests.py::SignaturesTests::test_add_function_arguments jsonargparse_tests/signatures_tests.py::SignaturesTests::test_add_method_arguments jsonargparse_tests/signatures_tests.py::SignaturesTests::test_add_subclass_arguments jsonargparse_tests/signatures_tests.py::SignaturesTests::test_add_subclass_arguments_tuple jsonargparse_tests/signatures_tests.py::SignaturesTests::test_add_subclass_discard_init_args jsonargparse_tests/signatures_tests.py::SignaturesTests::test_basic_subtypes jsonargparse_tests/signatures_tests.py::SignaturesTests::test_fail_untyped_false jsonargparse_tests/signatures_tests.py::SignaturesTests::test_final_class jsonargparse_tests/signatures_tests.py::SignaturesTests::test_implicit_optional jsonargparse_tests/signatures_tests.py::SignaturesTests::test_instantiate_classes jsonargparse_tests/signatures_tests.py::SignaturesTests::test_instantiate_classes_subcommand jsonargparse_tests/signatures_tests.py::SignaturesTests::test_invalid_type jsonargparse_tests/signatures_tests.py::SignaturesTests::test_link_arguments jsonargparse_tests/signatures_tests.py::SignaturesTests::test_link_arguments_apply_on_instantiate jsonargparse_tests/signatures_tests.py::SignaturesTests::test_link_arguments_subclasses jsonargparse_tests/signatures_tests.py::SignaturesTests::test_link_arguments_subcommand jsonargparse_tests/signatures_tests.py::SignaturesTests::test_logger_debug jsonargparse_tests/signatures_tests.py::SignaturesTests::test_optional_enum jsonargparse_tests/signatures_tests.py::SignaturesTests::test_print_config jsonargparse_tests/signatures_tests.py::SignaturesTests::test_required_group jsonargparse_tests/signatures_tests.py::SignaturesTests::test_skip jsonargparse_tests/signatures_tests.py::SignaturesTests::test_skip_in_add_subclass_arguments jsonargparse_tests/signatures_tests.py::SignaturesTests::test_skip_within_subclass_type jsonargparse_tests/signatures_tests.py::SignaturesTests::test_type_any_serialize jsonargparse_tests/signatures_tests.py::SignaturesConfigTests::test_add_class_arguments_with_config_not_found jsonargparse_tests/signatures_tests.py::SignaturesConfigTests::test_add_function_arguments_config jsonargparse_tests/signatures_tests.py::SignaturesConfigTests::test_add_subclass_arguments_with_config jsonargparse_tests/signatures_tests.py::SignaturesConfigTests::test_add_subclass_arguments_with_multifile_save jsonargparse_tests/signatures_tests.py::SignaturesConfigTests::test_config_within_config