If you ever took a programming class, you would know that different variable types have built in hard limits. It was never intended for stack sizes to go that high, so the programmers used a variable type that doesn't go that high. It's a design choice that makes the code more efficient. Variable types with larger limits take up more space in your RAM while you play the game and make the save files larger. RAM usage and save file size is already huge for this game and the programmers decided not to bloat it even more with unnecessarily large variable types
What variable type maxes out at 20000

I would be using an uint32 for the "type" and an uint32 for the stack size and a uint64 which can double as flags or a pointer to more data if the object has its own data attached and cannot be stacked (ie a gun with its own values). If the pointer is null assume it is just a simple item like a coin/ore/etc. If 7DTD had a "quality" aspect to items like they used to (I think?), like a steak that was 80% "good", you could throw in another 32bit there that could be a float or int and then mix it when combining/removing stacks.
I have designed many inventory and character systems, including fully moddable systems that load from XML. So I do not think there should be some "stack size limit" of 20000, but even if there is this limit (for whatever reason) then they shouldn't be allowing stack sizes higher than whatever that limit is anyhow like Red Eagle mentioned.
No? There is a hard coded limit of 32,767. You go beyond that it's on you. Just as if you took a screwdriver and stabbed your hard drive, that's not on TFP either. Geesh.
Or if your mouse wears out because you click too much. Not everything is TFP's fault.
Well if there is a limit they should be clamping to it when reading the XML ? That is a bug.