The SNES is like the NES in that VRAM, CGRAM (palettes) and OAM (sprite list) are accessed via address port and data port registers.
Difference 1: On the NES, VRAM and palette RAM are in the same "address space": you use the same address port and data port to write to both of them. On the SNES, VRAM, CGRAM, and OAM each have their own ports. Also, the SNES has separate data ports for writing and reading. So each of VRAM, CGRAM and OAM has an address port, a data write port, and a data read port:
Code:
Memory| Address | Data Write| Data Read |
------+-----------+-----------+-----------+
OAM | 2102-2103 | 2104 | 2138 |
VRAM | 2116-2117 | 2118-2119 | 2139-213A |
CGRAM | 2121 | 2122 | 213B |
The SNES PPU address ports are all
word addresses, not byte addresses. For VRAM, the data ports are 16 bits wide and you can write to just the high byte or just the low byte if you want (mainly for mode 7) For OAM and CGRAM, the data ports are 8 bits wide; you have to write twice to the data port, first the low byte and then the high byte, before your data actually goes through (for OAM it's actually a bit more complicated, but this explanation is close enough)
Finally, on the NES the PPU address port also affects scrolling, so you have to reset it after transferring data to the PPU. On the SNES the VRAM address port and the scroll registers are totally separate things.
Difference 2: On the NES, the console only contains 2Kbytes of RAM for the PPU, but the PPU is also directly connected to the cartridge and can read character data (and even nametables) from ROM. The cartridge controls the address map, even controlling how the internal 2Kbytes are mapped (horizontal/vertical mirroring). On the SNES, the PPU has 64Kbytes of VRAM and that is the only place it can read character and nametable data from. Character data must be loaded into VRAM by the CPU before it can be displayed.
Difference 3: On the NES, character data and nametables are at fixed locations in the PPU address space. The nametable size (whether you have 1x1, 1x2, 2x1 or 2x2 screens) is determined by how the cartridge decodes the PPU address lines. On the SNES, character data and nametables can be located anywhere in VRAM, controlled by PPU registers. The nametable size for each BG layer is also controlled by PPU registers. Like the NES it can be 1x1, 1x2, 2x1 or 2x2 blocks, and the tiles can also optionally be 16x16 pixels instead of 8x8. Oh, and the nametable blocks are 32x32 tiles rather than 32x30, because there's no more separate attribute table at the end.
Difference 4: The NES has a simple fixed-function DMA for transferring data from work RAM to OAM. The SNES instead has a programmable DMA engine that can transfer almost anywhere--work RAM, VRAM, CGRAM, OAM, PPU registers. It can also be automated to do DMA on specific scanlines for raster effects--this is called "HDMA" and is a major source of the SNES's power and versatility.
Of course there are many many more differences (multiple BG layers, mode 7, clip windows, transparency) but the above differences are the main NES things you have to "unlearn" before you can start programming the SNES.