When sending ASCII, if none of the characters have the high bit set, using 7-N-1 rather than 8-N-1 at any given baud rate will offer an easy 11% speed improvement. Beyond that, I've not seen much use for shorter bit lengths.
Good support for 9-bit data is helpful, though usage of it is limited by the fact that many UART devices do not support it well. It's common for UARTs to support 8 bits plus configurable parity, but for such a feature to be really useful the data for the ninth bit must be buffered both transmit and receive FIFOs, and it must be possible to configure the ninth-bit state for transmission without interfering with ninth-bit reception. Having a UART whose receive buffer records whether the received parity matched the transmit parity setting is useless if a byte may occur while software is preparing to change the parity for the next transmission, since software will have no way of knowing whether the incoming data was compared to the old or new setting.
BTW, an approach I haven't seen used, but which might be interesting would be to use a variable-length byte which would regard as a stop bit the first marking bit after the eight. This would allow 256 values to be sent in ten bit times, 256 different ones to be sent in eleven, and possibly another 256 different ones in twelve, etc. That would afford the protocol advantages associated with nine-bit data, but without adding extra overhead on most bytes. It would increase the likelihood that framing errors wouldn't be "noticed" by the UART, but the appearance of unexpected "special" characters could be detected in the protocol.