This is by design. Normally, VisualGDB sorts groups source files reported by CMake based on their physical directory, i.e. separating the PicoSDK Files from the rest of the files.
Once you create a virtual folder, VisualGDB assumes you want to rearrange them manually, and stops grouping them by paths, allowing you to drag them into the virtual folders of your choice. The virtual folders are completely separate from the physical folders and are stored in the .vgdbcmake file. This feature is meant for projects where many files are stored in the same directory, and the existing path-based grouping is not convenient.
If you would like to group your source files better, while relying on VisualGDB to separate the SDK sources, we would advice moving your sources to physical subdirectories, and updating the CMakeLists.txt file accordingly. VisualGDB will automatically show these subdirectories in Solution Explorer, as long as you have no virtual folders and have not disabled path-based grouping.