Q: What capability or features are needed to make a module programmable? This is a noob question but I was looking at some modules just to realize not all of them have MCUs - meaning they can't be programmed considering MCUs have a flash memory where the programs are stored, and SRAM to store the data. Is this the main reason? Basically, how does one determine whether a module is programmable or not from a hardware architecture standpoint?
Those modules though contain peripherals (i.e SPI) over which they can be communicated with another the MCU. For the context, I'm referring to nRF24L01

A: Many SPI-interfaced peripherals including the nRF24L01 actually do not contain a stored-program processor.  Instead they are more hard wire logic - state machines, etc.  It's actually a little tricky to implement an SPI peripheral on a processor - it can be done, but its conversely a very natural fit for a finite state machine to expose a bunch of registers over SPI which control the operation of other FSM's that do the actual work of the chip.
Of course other devices do, for example MEMS sensor ICs may have an on-board processor even capable of running custom code.
There are also a lot of fixed-function devices that are clearly acknowledged to have firmware, but where the end user isn't allowed to change it (at least beyond loading a new binary from the vendor).  Sometimes you can reverse engineer these, sometimes easily, sometimes only with extreme difficulty.  These would include things like radio + MCU combinations implementing some radio protocol.
And then there are components where the fact that they have firmware is little discussed, almost secret.  Most USB-interfaced chips presumably have something like an MCU inside, there have even been suggestions that some USB-serial parts are just re-numbered generic MCUs.  But the firmware of such devices may be not just non-alterable by a customer, but actually immutable, for example in a mask ROM or one-time-programmable technology.

A: You are misunderstanding what the term programmable means.  To be programmable does not mean it has a processor that runs programs.   It is one of those terms like embedded, firmware, 8-bit processor, and dozens of others that are used in the hardware/software world but are vague.  They do not have dictionary definitions or lets say the dictionary definitions are by definition wrong because the terms are vague.  Some are marketing depending, the marketing department for company X has copy that says that product Y runs on a Z number of bit processor. Or its harvard architecture or many other terms.  And that copy is not wrong because by their definition that is correct.  Some other company may use a term differently and they are also correct in their use.  Long timers at certain companies will sometimes develop very rigid definitions for terms which are correct inside those walls but completely contradict long timers at other companies, both companies are right.
So for the folks that have commented so far, and the notion that this peripheral/module is programmable.  It is.  it is not a rigid fixed function product that you cannot change its functionality, certainly not through a program on it or some other connected in some way module/device.
A microcontroller (another one of those terms that is vague, there are corner cases in folks definitions) generally has a processor some ram for data and instructions and sometimes non-volatile storage for instructions and data.  Quite often also has some on board peripherals, uart, timer, spi, i2c etc.  These peripherals themselves do not have processors in them but are programmable because they are not fixed function, the uart is generally not locked at one speed and bits per character and stop bits, you can program that you can change those settings, you can pick when to send a character and when not to.  But through some bus there is a processor running a program that the user uses to manipulate the connection between that processor and that uart program it to do things.  
It may have a state machine in it which is basically all a processor is, but rarely in one of these peripherals do you get to feed the state machine directly like you do in a processor, you set some settings that go through some logic that turn into inputs into the state machine, much less generic than a "processor" (another one of those terms that is vague and in the eye of the beholder).
So whether it is a uart on the same chip through some number of layers of memory mapped busses, or a uart or some other peripheral on some other chip via some number of layers of busses, and the peripheral has options that can be chosen or manipulated over/through that bus, it is programmable too.  It might have processors hidden or not in it, it might just be some state machines or just some discrete logic, it is still programmable. as is this product you are looking at.
Where the boundary is of fixed function vs programmable is where different definitions will disagree.  
But you know my bread machine is programmable, through buttons and a display I can tell it when to start and what things to do.  A coffee maker with a dial for a timer and an on off button is programmable, I want to you to start at 7:00AM, go...Didnt have to write one line of code.
This chip vendor happens to make other products with with a processor on board and that or similar transceivers so that you dont have to buy two chips an mcu and this you can just buy one bigger chip from them.  Is that at a high level any different than a separate mcu chip and this chip?  In either case if the vendor has a processor to manage the radio buried in the design but dont want us to know there is no reason why they would ever hint at that.  Some produces have a full blown mcu inside, but we dont know that they just give us pins and bus specs and they program the product/part before it goes out.  But it might have an arm instead of just the typical 8051 or z80 or other you see (hah, only sometimes you get to see) buried in these products.  Some gps module vendors go into detail as to what processor is inside, but you cant touch that thing it is pre-programmed, you apply power and ground and hook a uart up to the tx pin and thats all you get sometimes.  They have a floating point unit in there all kinds of math going on, pretty good sized program running, but its not programmable as far as we are concerned turn it on and it spits something out we cant control (some are you can change the baud rate and updates per second, maybe more features, but not download firmware).

What capability or features are needed to make a module programmable?

It needs to be not fixed function and it needs to have some form of an interface where you can choose options to change/customize how it functions.  A processor and code are not a requirement.
I would argue the light in my office is not programmable I have an on/off switch so some may argue that it is, but I would say it isnt.  If it had a dimmer or a three way bulb lamp, well okay now we are venturing into gray area (as far as the "system" goes, the power plus switch plus light, socket, wires, etc).
