It turns out that I didn't wire the LED output to anything, and so yosys optimised the RAM away. If I add
assign LED = memory_read_data[7:0];
to the test bench, then the RAM is correctly synthesised:
Info: Device utilisation:
Info: ICESTORM_LC: 27/ 5280 0%
Info: ICESTORM_RAM: 1/ 30 3%
Info: SB_IO: 9/ 96 9%
Info: SB_GB: 3/ 8 37%
Info: ICESTORM_PLL: 0/ 1 0%