diff --git a/src/Plugin/Field/FieldWidget/AddressDefaultWidget.php b/src/Plugin/Field/FieldWidget/AddressDefaultWidget.php
index 31ebb68..afb214f 100644
--- a/src/Plugin/Field/FieldWidget/AddressDefaultWidget.php
+++ b/src/Plugin/Field/FieldWidget/AddressDefaultWidget.php
@@ -186,7 +186,9 @@ class AddressDefaultWidget extends WidgetBase implements ContainerFactoryPluginI
    */
   public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
     $item = $items[$delta];
-    $value = $item->getEntity()->isNew() ? $this->getInitialValues() : $item->toArray();
+    // If the item is empty and the entity is new, or the item is empty and
+    // required, get the initial values, which include defaults.
+    $value = $item->isEmpty() && ($item->getEntity()->isNew() || $this->fieldDefinition->isRequired()) ? $this->getInitialValues() : $item->toArray();
     // Calling initializeLangcode() every time, and not just when the field
     // is empty, ensures that the langcode can be changed on subsequent
     // edits (because the entity or interface language changed, for example).
