The user discussion count is only updated by difference during some events, like creating a discussion does +1, deleting does -1.
But it can get messed up by extensions or manual database edits. Maybe some extensions created or deleted some of your discussions. Or the author was changed. Or it was edited in the database.
There's also a whole set of circumstances if some tags are public while other are private, or if some discussions aren't available to all users.
It's very difficult to tell what caused it after the fact. If you have one of the audit log extensions enabled there might be enough information to find out where it could have gone out of sync.
It will likely not fix itself unfortunately. You can go in the database with a tool like phpMyAdmin and set the value back to the expected number. Then if it goes out of sync again, try to look for what action was performed on the last discussion before this happened.