SerializedDictionary doesn't override the generic dictionary function to remove a value and get it as an "out" parameter.
public bool Remove(TKey key, out TValue value)
This caused me problems when I used it and everytime the serialization was refreshed, the removed element came back. Took me some time to figure that one out. xD
I'm on Unity 6, I don't know if that was always there or if this is new.