Why some of mysql system variables are readonly
innodb_buffer_pool_size
The InnoDB Storage Engine has too many moving parts to just allow the buffer pool to be resized on the fly because the buffer pool interacts with system tablespace (ibdata1) and the transactions logs (ib_logfile0, ib_logfile1).
log-bin
In spite of the MySQL Documentation, you can change the effect of log-bin using another variable called SQL_LOG_BIN. Look at the effects:
SESSION
If you run
SET SQL_LOG_BIN = 0; 

this will disable your DB Session from recording binlog events.
If you run
SET GLOBAL SQL_LOG_BIN = 0; 

this will disable all incoming DB Sessions from recording binlog events.
General Log / Slow Log
As a DBA, I am very glad that the general log and slow log are dynamic. Otherwise

how could do perform any log rotation ?
how to stop these logs before diskspace runs out ?

Here are some posts I made about doing log rotations

Nov 10, 2012 : Redirecting MySQL errors and slow logs into another database
Mar 30, 2012 : MySQL slow log configuration
Jun 30, 2011 : How do I output MySQL logs to syslog?

Datetime Format
mysqld is usually cognizant of timezone and internalization of datetime displays. I do not see a beneficial reason for shifting the datetime format on demand. This may actual cause problems, not so much with mysqld, but with PHP/Python/Ruby scripts that read dates from the MySQL instance and may misinterpret '04/12/2013' as April 12th when it should be Dec 4th. That would be developer's nightmare to deal with. Having datetime format a read-only variable simply provides a safety net against such a death-defying move whereas proper planning of the database and code interoperability with dates would be in order.