serial.readBytes vs serial.write

And never the twain shall meet without error messages (invalid conversion etc).

Or a simple cast.

Surely they should use the same type

Why? They perform different functions. Though, technically, readBytes() should really have been readChars(), but you can't tell the Arduino team much.

or at least have some (overloading) technique to accept either?

Is a cast too complicated for you?