According to me, it is definitively too complicated with the present API.
Consider this snippet in a Custom Keystroke Script:
var f = event.target;
if (event.commitKey === 2) {
event.commitKey = 0;
f.insertItemAt(event.value, event.value, f.numItems);
event.rc = true;
}
you can add a new item when Enter is pressed but it is not easy to reset the box for the next entry. I found a way by setting event.value="" in the chained Calculate Script upon a conditional test of a global variable set above but it is clearly not linear...
Removing entries is even trickier: I think you would necessarily need another field to focus on and immediately get back to the dropdown box. That is required to force a commit and have the list items up to date after pressing CANC (I didn't tick the "commit selected value immediately" check box but used event.change to parse the list items and find the index of the item to be removed).
A possible workaround is to use a check box next to the dropdown: if checked you would use "commit selected value immediately" (it can be done programmatically by commitOnSelChange) and upon selection try to deleteItemAt.