At what point does software become firmware? When you put it in a rigid form of memory? Is it wrong to then refer to the firmware as software?
It's practically impossible to draw up demarcations unless it is by the means used to store it and make it available for operation (ie the implication it has to the end user).
Let's suppose we are discussing some compiled code which, if it were stored on disk and loaded into RAM to execute, would be definitely "software", but because it has been stored in non-volatile memory by the manufacturer as an integral and essential part of the system, I regard it as "firmware". Some programmer has written a program in a high level language which has then been compiled by another program known as a compiler into the binary execution code that suits a specific processor environment. The resulting program does something useful, and there is no doubt it is software, but it becomes firmware when it is installed in a way that is not amenable to change by the end user.
What's the alternative? Only to say there is no such thing as firmware and all forms of stored functional definition regardless of creator, method of creation, or means of storing it is software. That would meet just as much opposition.
Suppose I draw a circuit diagram for some functional element or other, and build the circuit in logic gates - that's hardware. But what if I use that circuit diagram to work out which fuses to blow in a Programmable Logic Array (a chip that contains logic gates which can be connected in various ways to implement a wide variety of logic circuits, replacing a circuit board with one chip)? The process of blowing the fuses programs the chip to do what the designer intended, and is accomplished by loading a binary definition file into a programmer - or (with patience) manually by setting highs and lows on the relevant pins and applying a voltage pulse to blow the addressed fuse. No software has been used in the inspiration, drafting, calculation, or programming of the PLA, and the programming in the PLA is not executed (it routes logic signals through a switch array that is defined once and then never changes). Is the PLA content "software"? Of course not.
However, I can now use hardware description languages (eg VHDL) to define the functionality of the PLA in (effectively) equations, and a software compiler can produce the binary definition file targeted at any specific kind of PLA resulting in precisely the same fuse pattern that I worked out manually. Is that "software"? Can't be, it's indistinguishable from a PLA programmed by the manual method, but it's not hardware either because its functionality is not inherent in the hardware until the firmware is programmed in.
The same argument can be applied all the way up the chain, until the only point of distinction is whether the firmware/software in question is whether it is available for the user to modify or is in some way protected. The argument that if it is stored in non-volatile memory it must be firmware doesn't hold, because all our phones/tablets store everything in NV memory, but we can change it.