Basically, none. The intent is to provide the optimum access for a device.
Disk devices (including flash) tend to perform best by reading and writing on their native boundaries - thus block access provides better utuilization of system buffers (only one physical read for a block). Think about having to read two blocks from disk, then discard part of one block, and part of the second, and returning the data that spans the two... A bit slow, with multiple I/O. It gets worse when you are writing. Two write you need to first read both blocks, then replace the data that spans, then write both blocks back (total of four I/O operations - especially when the blocks may be scattered, because you now need the seek operations in between).
Character access of some devices work best (terminal, tape, network even) as they don't have a native block nature. Using a character interface to a block device tends to cause multiple I/O operations when it isn't on a block boundary.
The actual difference is more in how the device is treated.
There is less of a difference in Linux than there used to be as many of the features of character devices are also in the block devices - and both access interface may be provided by the same functions.
Some dated references are http://www.linuxjournal.com/article/2890
The answer to your question is "yes". You can do block access with a character device - but there may be a bit more overhead in use, and it will depend on the device. Some devices (such as a terminal) will not allow you to do block type I/O - there may be delays in data, plus you can't seek either backward or forward (it doesn't make any sense...).
UNIX systems also have a designation that the character device interface bypasses the system buffers - which imposes a rather large overhead depending on what you are doing. This is useful if you are doing filesystem repair or debugging, but can cause massive corruption if the block access is ALSO being used.