Multiple use, single bind named parameters are the preferred way to go. You even say they are "ideal".
The implementation cost of this is a trivially more complex than straight positional parameters. A simple loop calling strcmp() to match the parameter name. There are no changes required to the execution engine.
This runtime cost of this support is incurred only once when the statement is prepared. There is no additional cost at execution time.
It does not require each application to implement (and possibly get wrong) its own code to map between names and numbers. The SQLite code would be developed once, tested, and would work correctly for all applications. Why force all users to reinvent this stuff over and over?.
I agree that this would be an ideal situation. And if someone does implement it, they will have my praise too. This should be done during the beta phase, of course. -- Darren Duncan