@dhgarrette's PR reminds me that SparseVector once supported (long long ago in old Scalala) default values other than zero. It was a bit hard to deal with, but it was worth it for log domain stuff.
Basically, SparseVector should have a default value variable that can be adjusted as it is updated by various operations.