Update
I double-checked, and a bunch of packages were updated during the day/evening (I did pacman -Syyu in the morning). This along with a reboot seems to have solved this, at least for now.
I'm attaching the list of updated packages here, in case it helps in pinpointing the root cause.
attica (6.7.0-1 -> 6.8.0-1)
kconfig (6.7.0-1 -> 6.8.0-1)
kcoreaddons (6.7.0-1 -> 6.8.0-1)
kcrash (6.7.0-1 -> 6.8.0-1)
kdbusaddons (6.7.0-1 -> 6.8.0-1)
karchive (6.7.0-1 -> 6.8.0-1)
kcodecs (6.7.0-1 -> 6.8.0-1)
ki18n (6.7.0-1 -> 6.8.0-1)
kfilemetadata (6.7.0-2 -> 6.8.0-1)
kidletime (6.7.0-1 -> 6.8.0-1)
kwindowsystem (6.7.0-1 -> 6.8.0-1)
kauth (6.7.0-1 -> 6.8.0-1)
kwidgetsaddons (6.7.0-1 -> 6.8.0-1)
kbookmarks (6.7.0-1 -> 6.8.0-2)
kguiaddons (6.7.0-2 -> 6.8.0-1)
kcolorscheme (6.7.0-1 -> 6.8.0-1)
kcompletion (6.7.0-1 -> 6.8.0-1)
breeze-icons (6.7.0-1 -> 6.8.0-1)
kiconthemes (6.7.0-1 -> 6.8.0-2)
kitemviews (6.7.0-1 -> 6.8.0-1)
knotifications (6.7.0-1 -> 6.8.0-1)
kjobwidgets (6.7.0-1 -> 6.8.0-1)
kservice (6.7.0-1 -> 6.8.0-1)
kwallet (6.7.0-1 -> 6.8.0-1)
solid (6.7.0-1 -> 6.8.0-1)
kio (6.7.0-1 -> 6.8.0-2)
baloo (6.7.0-1 -> 6.8.0-1)
bluez-qt (6.7.0-1 -> 6.8.0-1)
ell (0.69-1 -> 0.70-1)
kpackage (6.7.0-1 -> 6.8.0-1)
syndication (6.7.0-1 -> 6.8.0-1)
knewstuff (6.7.0-1 -> 6.8.0-1)
frameworkintegration (6.7.0-1 -> 6.8.0-1)
iwd (3.0-1 -> 3.1-1)
kcalendarcore (6.7.0-1 -> 6.8.0-1)
kconfigwidgets (6.7.0-1 -> 6.8.0-1)
kirigami (6.7.0-1 -> 6.8.0-1)
kglobalaccel (6.7.0-1 -> 6.8.0-1)
kxmlgui (6.7.0-1 -> 6.8.0-1)
kcmutils (6.7.0-1 -> 6.8.0-1)
kcontacts (1:6.7.0-1 -> 1:6.8.0-1)
kdeclarative (6.7.0-1 -> 6.8.0-1)
kded (6.7.0-1 -> 6.8.0-1)
kpty (6.7.0-1 -> 6.8.0-1)
kdesu (6.7.0-1 -> 6.8.0-1)
kdnssd (6.7.0-1 -> 6.8.0-1)
kholidays (1:6.7.0-1 -> 1:6.8.0-1)
kitemmodels (6.7.0-1 -> 6.8.0-1)
knotifyconfig (6.7.0-1 -> 6.8.0-1)
kparts (6.7.0-1 -> 6.8.0-1)
kquickcharts (6.7.0-1 -> 6.8.0-1)
krunner (6.7.0-1 -> 6.8.0-1)
kstatusnotifieritem (6.7.0-1 -> 6.8.0-1)
ksvg (6.7.0-1 -> 6.8.0-1)
sonnet (6.7.0-1 -> 6.8.0-1)
syntax-highlighting (6.7.0-1 -> 6.8.0-1)
ktexteditor (6.7.0-2 -> 6.8.0-1)
ktextwidgets (6.7.0-1 -> 6.8.0-2)
kunitconversion (6.7.0-1 -> 6.8.0-1)
kuserfeedback (6.7.0-1 -> 6.8.0-1)
libibus (1.5.30-3 -> 1.5.31-1)
modemmanager-qt (6.7.0-1 -> 6.8.0-1)
networkmanager-qt (6.7.0-1 -> 6.8.0-1)
prison (6.7.0-1 -> 6.8.0-1)
purpose (6.7.0-1 -> 6.8.0-1)
qqc2-desktop-style (6.7.0-1 -> 6.8.0-1)
I'm still connecting to the same download servers as before, but now the download rate is steady and at full bandwidth. Before, it was bursty, constantly jumping up and down.
I also confirmed that the stable client (v. 1730853027) now also maintains full bandwidth.
Your system information
Issue
I'm getting download speeds of 30-50 Mbit/s on a 100 Mbit/s connection. I have tried the proposed workarounds in issues #10248 and #9715, but they have had no effect on this issue whatsoever.
Hardware:
AMD 7950X
Asus TUF X670E Plus
64 GB RAM
WD SN850X 2TB
Steam Beta Branch: Steam Beta Update
Steam Version: 1731112063
Steam Client Build Date: Sat, Nov 9 01:37 UTC -08:00
Steam Web Build Date: Sat, Nov 9 01:55 UTC -08:00
Steam API Version: SteamClient021
tldr workarounds tried:
/etc/hoststo block unwanted servers (see https://github.com/ValveSoftware/steam-for-linux/issues/9715#issuecomment-2425357737) is pointlessI still have a completely separate Windows (11, 22H2) installation on the same system (not dual boot; I boot from UEFI if I need to use Windows). On Windows I don't have this issue, downloads are always on 100% of bandwidth.
I'm not locked to only one download server (without any tweaks):

The proposed HTTP2/download server tweaks with

steam_dev.cfgdo allow more connections, but it has absolutely no effect on my actual download speed:Steps for reproducing this issue: