Trying to summarize why this problem appeared all of a sudden and some specialties observed.
The command used by the test is/was:
for dev in /sys/class/net/!(lo); do ...; done
Now, '!' is the character for history expansion. History expansion is automatically disabled in some cases inside a command. According to the bash man page:
Several characters inhibit history expansion if found immediately following the history expansion cheven if it
is unquoted: space, tab, newline, carriage return, and =. If the extglob shell option is enabled, ( will also inhibit
expansion.
so, !( (from !(lo) ) is treated differently if extglob is enabled or disabled.
As for the reason why extglob status changed:
systemd had previously recommended systemd-bash-completion, which in turn required bash-completion. AS this was only one split out, and the same was not done for other shell-completions, the package was merged back into the main systemd package. As this is not explicitly bound to a shell in use, it does neither recommend not require bash-completion (which makes sense).
This, in turn," resulted in bash-completion no longer being auto-installed on a system (I submitted a pattern change to explicitly enable it on regular systems, as users of bash certainly profit from it)
bash-completion itself enables shopt extglob, which is how this all ever worked to start with. Merely a lot of luck