HI! 

IMHO,as a user (not a developer) i will show my vision about 'alter'...

i think the ONLINE is equal to: please don't lock my table and report "waiting table lock" at processlist for more than 1 second or users will kill me! =] hehe

about algorithms i think it's something related to 
"using this one will expend more time, but use less disk", 
"this one will expend less time, but use temporary files", 
"this have bigger locks, this one have small locks" 
or something like this to help user selecting the best "online" model to use with current workload 

thinking again about syntax.. the "ONLINE" keyword could be removed... the ALTER TABLE METHOD=OFFLINE, method=nolock, method=shared, method=anyothers.... could do the same work, the ONLINE keyword is just a "please don't use OFFLINE algorithm" and i think we could have a new var here "default_offline_algorithm=xxxxxx" at my.cnf

as a DBA, i think about use of resources and time, like any project management (cost, resource, time)
I NEED online when i have some programs running queries at <1 qps or a 'soft/hard realtime' process, and i need a new index, for example, and table is very big (let's talk about >1GB)

with a offline solution i can create index only when i halt all programs
the online will solve many support problems to me, related to scheduled tasks. I think that's the main point, avoid scheduled tasks

About internal algorithms and locks, i don't have many to say since i don't know many internal features and structures, sorry... in future i will help with internals :)

good work guys! when complete this task please let'me (everybody) know via mail list :) i will test with >4GB tables in same day/week that i need new index and change some fields size