Eso pasa por que ruta ya es unicode, supongo que el linux dlg.GetPath() regresa una cadena unicode, pero en windows no.
 
Ahora después de buscar un poco me doy cuenta que os.system no acepta cadenas unicode. 
Quedando algo mas o menos así   
Código Python:
Ver original#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import wx
 
def main():
    dlg = wx.FileDialog(None)
    a = dlg.ShowModal()
    if a == wx.ID_OK:
        ruta = dlg.GetPath()
        if not isinstance(ruta, unicode):
            try:
                ruta = unicode(ruta, "utf-8")
            except UnicodeDecodeError:
                pass
        ruta = ruta.encode("utf-8")
        confirmar = raw_input("Procede a eliminar el archvivo "+ruta+"\nDesea eliminarlo? s/n ")
        if confirmar.lower() == "s":
            os.system("shred -u -v "+ruta)
            print("Archivo eliminado")
        else:
            print("Operación cancelada")
 
if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    while True:
        main()