Hi
Some graphics cards silently use a cache on the CPU side for textures and even for VBOs, you cannot be sure that OpenGL allocates some memory really resident on the GPU. This behaviour is not the same on all graphics cards, some of them simply return an OpenGL error when they cannot perform an allocation on the GPU, this is particularly true for VBOs.
The last argument of glTexImage3D is a NIO buffer. It can't be null. This buffer might reside in CPU memory even though you use glMapBuffer (behaviour reproducible with NVIDIA Quadro FX cards).
Edit.: avoid using indirect NIO buffers in such situations of course.