There will be a discontinuity as long as the months are different lengths.
In the current implementation there will be only one discontinuity per month; the 1st of the month always goes back to the 1st of the preceding month. The overlap into the next month continues linearly until "now" is the 1st of the month.
If I understand correctly, you would prefer that on March 29th, 30th, and 31st, this command would return the same date (except on leap years)?
$ date --date=-1month +"%m-%d"
02-28
This would introduce one to three discontinuities per month, but the calculated month difference always the preceding month.