In my Zsh startup on Mac I had to worry about collation, as I expected ~ to sort last (I have a directory prefixed with ~ to load plugins that need to be loaded last). Idk why a locale of utf-8 has it sorting differently, but I needed LC_COLLATE=C to have it sort as expected:
# source all shell config
export LC_COLLATE=C # ensure consistent sort, ~ at end
for file in ~/bin/shell/**/*.(z|)sh; do
source "$file";
done