First of all, sorry if my answer is not accurate. The main work on my exporter was done 4 or 5 years ago, and my memory is not what it used to be. I'm too old for this fbx crap ^^
Yes, you're right. The reason the weight info of bones are attached to meshes (instead of weight info attached to nodes) is that a bone can be tied to several meshes at the same time.
If you have only one mesh and several bones, the node-weight structure would be ok.
However if you have several meshes and several bones (i.e. dude.fbx) you probably couldn't prewsent all the data without duplicating data (or would be harder to access to) For dude.fbx you'll have to generate skinning data for several meshes (head, body, ...) , you'll probably see there the reason they chose this layout , specially if you optimize nodes (i.e. the foot nodes are not needed if you're only rendering and animating the head)
As a side note, what I did with my exporter (in case it's useful to you, maybe you're already doing that) is creating my own data structures (that matches the ones needed in the game) fill them with assimp data, and then write them to disk.
At first I tried to directly dump the data as it came from assimp and it was too chaotic. Assimp needs some amount of preprocessing to get the data as you wish (specially with skinning and animation channels).