In general, yes, ISA cards have fixed memory and I/O addresses.
ISA inherently has the card decide to what memory and I/O addresses it reacts because address decoders are located on the cards. How that decision is being taken varied over time, however. Because the ISA bus in principle exposes the full system bus to cards with no isolation or address translation, a card might technically react to any address its designer wanted it to (This is more flexible than, for example, assign fixed address ranges to slot numbers like other systems did, but also potentially leads to more collisions)
Very early in PC history, a simple memory and I/O map had been designed and that specified, for example, an MDA card had to have its video memory at 0B0000h, and a CGA card was specified to live at 0B8000h. Similar for associated I/O addresses.
Cards that weren't standardized like that used to have jumpers or DIP switches that typically allowed you to choose between a (limited) set of memory (if needed) and I/O addresses.
Only much later, when memory and I/O address spaces started to become crammed with more and more peripherals, new approaches had to be invented.
This started with jumperless cards that could have their memory and address resources configured into non-volatile memory (which created some sort of chicken-and-egg-problem: In order to program that jumperless card to use some specific resource, you had to access it somehow. And if that "somehow address" was already taken by another peripheral, you ended up with a collision and either had to revert to jumpers again or had to remove cards to make the initialization for a new card possible).
Even later, ISA PNP tried to automate this process of allocating memory and I/O resources to cards by having the BIOS and the cards negotiate resource allocation during startup. (Even there, however, it is ultimately the card that decides what addresses it listens to and what potential resources it offers to the PNP BIOS for negotiation. And the resulting resource is fixed after the negotiation process). This approach somehow worked in theory but with PCs typically having a mix of legacy cards with fixed resource allocation and "new"-style PNP cards made that bargaining for resources very difficult, on heavily-equipped PCs sometimes even impossible. This (and other reasons like addressable space and bus speed) eventually led to the introduction of more advanced bus systems like MCA and PCI.
BTW: Even if your question doesn't ask for this, very much the same is true for the third type of resource typically needed by peripherals: The IRQs.