According to me, it is a bug in Tensorflow and you should open a bug thread about it.
In any case, to work around this issue, you can use tf.identity to create a float64_ref instead of the float64 x and pass this value as the inputs parameter.
import tensorflow as tf
import numpy as np
with tf.Session() as sess:
x = tf.Variable(np.ones((2, 3)))
sess.run(tf.initialize_all_variables())
out, state = tf.nn.rnn_cell.BasicRNNCell(4)(tf.identity(x), x)