Hi Barrett,
Sorry for the late answer. Thanks @lgusm for the alert :).
Quick answer
Can you try applying expand_dims on the feature before calling the model.
Full example:
model.save("/tmp/my_model")
loaded_model = tf.keras.models.load_model("/tmp/my_model")

for features,label in test_ds:

  # Add a batch dimension.
  features = tf.nest.map_structure(lambda v : tf.expand_dims(v,axis=0), features)

  # Make sure the model is feed with rank 2 features.	 
  features = tf.nest.map_structure(lambda v : tf.expand_dims(v,axis=1), features)

  print(loaded_model(features))

Explanations
There are two separate issues:
Part 1
In your example {‘band2’: 346.0, ‘band3’: 625.0, ‘band4’: 443.0, ‘band8’: 2688.0}, the values are of rank 0 i.e. those are single values. Instead, models should be fed with a batch of examples. So you need to make sure the examples are of rank>=1. The result of  tf.expand_dims(v,axis=0)  will be:  {‘band2’: [346.0], ‘band3’: [625.0], ‘band4’: [443.0], ‘band8’: [2688.0]}.
If you are using the tf.data.Dataset API, you can also use the batch 1 method. The pd_dataframe_to_tf_dataset 1 method also does that for you.
Part 2
Internally, Keras all the features to rank 2. However, when calling the model directly (i.e. model(s)), this logic is skipped, which creates a shape mismatch. In your error, you can see that tensors of rank 2 are expected e.g. TensorSpec(shape=(None, 1). If the model was just trained (model in your example), Keras is able to solve the issue. But if the model was serialized and deserialized (loadedModel in your example), it does not.
The second call tf.expand_dims(v,axis=1) will reshape your features are follow {‘band2’: [[346.0]], ‘band3’: [[625.0]], ‘band4’: [[443.0]], ‘band8’: [[2688.0]]}
This is of course not user friendly :), and we are working with Keras and hoping to solve the problem soon. In the meantime, users have to make sure the model’s calls are of rank 2.
Note: model.predict and model.evaluate do not suffer from this issue i.e. loaded_model.predict(test_ds) works fine in all cases.