I think the notion that you can add dependent types without changing / expanding the mental model is mistaken personally.
Even better:
fn create_2d_array<const columns: usize, const rows: usize>()
-> [[u32; columns]; rows] { .. }
let foo = create_2d_array(); // Sizes are inferred.
Clearly that can't be true. The function signature explicitly states that T is a type.
I think similarly there is an expectation that you only have types (and lifetimes) in <T, ..>, and permitting <const N: usize> breaks that by allowing values within <..>. My view is that both expectations need to be adjusted once you're in a (const) dependently typed language.