-E stride=xxx -- the stride size for the volume -- is read in as a 32-bit unsigned long and stored in the superblock as a 16-bit value. I was specifying 131072 (128K) as my stride size. I was getting an error that stride size "131072" was invalid.
The issue is that it read it properly as a 32-bit integer, improperly stored it as a 16-bit integer, and read it back as 0. Since 0 is invalid, it printed an error message using the textual argument, saying Stride size "131072" is invalid. Because it didn't print the stored value, I couldn't see the problem.
The true fix, though, is to run mkfs.ext4 with -n first to determine the block size, then manually divide my stride by that block size -- why isn't that done automatically?