You should be able to create a folder at the same level of your CI "system" folder and in there you can copy all the shop files. You then just access the shop via domain.com/shop/
I don't think you need to change any routing or .htaccess rules if you already have the default .htaccess file in place that removes index.php from the CI urls. I'm doing this on several sites and it works fine.
EDIT: here is my full .htaccess file for a site where this works fine
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
redirect 301 /disclaimer/disclaimer.html /disclaimer.html
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#special rule to allow the 301 redirect from above
RewriteCond %{REQUEST_URI} !disclaimer/disclaimer.html$
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
#####################################################
# CONFIGURE media caching
#
Header unset ETag
FileETag None
<FilesMatch "(?i)^.*\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
Header unset Last-Modified
Header set Expires "Fri, 21 Dec 2012 00:00:00 GMT"
Header set Cache-Control "public, no-transform"
</FilesMatch>
#
#####################################################
<IfModule mod_deflate.c>
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>