Why does smash server say I've got a metadata mismatch?

You can compare the metadata hashes manually as well:

cardano-cli stake-pool metadata-hash --pool-metadata-file <(curl -s -L https://METADATA_URL)
cardano-cli stake-pool metadata-hash --pool-metadata-file <(cat METADATAFILE.json)