It's fiddly yes, but I've not had too many issues (so long as I follow all the steps whenever needed). Is it a bug/can the coding be improved? Absolutely. But it has got a pretty simple workaround.
First, yes, I make sure their training schedule always keeps their armor on. It's also shown as the 'Ready' status, once you have it activated. Then you never have to worry about them taking the armor off 99% of the time.
Next, I do have them set to 'wear armor over clothes'. I let them equip everything they can (and yeah this often means they are assigned their steel high boots but won't wear them, because they're already wearing shoes and you can't put the boots on overtop the shoes).
So once they have grabbed everything else, I briefly switch the individual dwarf with problematic footgear over to 'armor replaces clothing'. This causes them to drop their clothes including the offending shoes, and go to grab their boots. Once everything is green, I switch them back to 'wear armor over clothes'. They will rush back to where they dropped their clothes and put them all back on (except the shoes that they can't wear because now they have the boots). They will often carry their shoes either to storage or back to their bedroom cabinet.
From there they are usually good for long periods of time, until they get into a fight where a boot gets knocked off, or better equipment is made that they want to switch to, or the various bugs that happen when they come back from an offsite raid, etc, and they might lose track of their boots and pick up shoes again. If that happens I just repeat the process - switch that dwarf to 'armor replaces clothing' again, have them grab the new boots, then back to 'wear armor over clothes' and we're good again for a long while.
As I said, fiddly. I typically only need to do this once per dwarf in the militia squads on initial setup, and then sporadically and rarely in the years afterward (there are some dwarves that seem more prone to grabbing shoes than others but I haven't tracked it to any particular personality trait yet).
If the clothes underneath their armor get worn... as far as I have noticed they *do* replace their clothes with new ones if available. However I don't watch this super-closely.
One thing I'd like to try sometime but I haven't yet, is actually assigning them clothes as *part* of the armor uniform, then see if that has an effect on whether they replace the clothing pieces that get worn. In that situation, if all pieces of clothes including stuff like loincloths and socks are part of the uniform, then I could probably set 'armor replaces clothes' permanently and never have to worry about the shoes/boots shuffle anymore.