Since Record::buildFields() also builds keys, it should ensure that keys is also empty before returning.
Currently it's impossible to alter just an index, without also altering fields.
$record->setKey(array('my_index'), 'index', null, false)
->alter('my_table');
Should produce:
ALERT TABLE `my_table` DROP INDEX `my_index`
Actual result: